次のコードを使用して、WinForms アプリから Web API にデータを送信しています。
private string SendBatch(string URL, string POSTdata)
{
string responseData = "";
try
{
HttpWebRequest hwrequest = (HttpWebRequest)WebRequest.Create(URL);
hwrequest.Timeout = 600000;
hwrequest.KeepAlive = true;
hwrequest.Method = "POST";
hwrequest.ContentType = "application/x-www-form-urlencoded";
byte[] postByteArray = System.Text.Encoding.UTF8.GetBytes("data=" + POSTdata);
hwrequest.ContentLength = postByteArray.Length;
System.IO.Stream postStream = hwrequest.GetRequestStream();
postStream.Write(postByteArray, 0, postByteArray.Length);
postStream.Close();
HttpWebResponse hwresponse = (HttpWebResponse)hwrequest.GetResponse();
if (hwresponse.StatusCode == System.Net.HttpStatusCode.OK)
{
System.IO.StreamReader responseStream = new System.IO.StreamReader(hwresponse.GetResponseStream());
responseData = responseStream.ReadToEnd();
}
hwresponse.Close();
}
catch (Exception e)
{
responseData = "An error occurred: " + e.Message;
}
return responseData;
}
}
少量のデータを送信すると、API は問題なくデータを受信します。しかし、大量のデータ (30MB 以上) を送信しようとすると、不正な形式のデータを送信したという API からのエラーが発生します。
タイムアウトを 10 分に設定しましたが、約 2 分後にエラーが表示されます。
SO で行った質問によると、投稿サイズに制限はなく、API にも制限はありません。
私は解決策を見つけるために数日間試みてきたので、どんなポインタでも大歓迎です。
ありがとう!