Как отправить большие данные пост-строки через WebRequest? - PullRequest
1 голос
/ 11 октября 2019

Я отправляю содержимое файла через почтовый запрос, используя WebRequest.

Работает нормально, когда в файле меньше содержимого, но при большом размере не отправляет никаких данных.

WebRequest HttpWebRequest = WebRequest.Create("http://testapi.com");

HttpWebRequest.Method = "POST";
HttpWebRequest.Headers.Add("X-API-KEY", APIKEY);

byte[] data = Encoding.UTF8.GetBytes(postdata);

HttpWebRequest.ContentType = "application/x-www-form-urlencoded";
HttpWebRequest.ContentLength = data.Length;

Stream requestStream = HttpWebRequest.GetRequestStream();  

requestStream.Write(data, 0, data.Length);
requestStream.Close();

Я получаю пустой массив в конце API. Он должен получить все содержимое файла, который я отправляю.

Я пытался с почтальоном, и он работал нормально. Так что я думаю, что проблема в стороне c #.

1 Ответ

0 голосов
/ 11 октября 2019

У вас есть большой файл, в первую очередь вы должны его закодировать:

StringBuilder fileContents = new StringBuilder();
// Read the file and display it line by line.
System.IO.StreamReader file =
new System.IO.StreamReader(@"c:\test.txt");
while((line = file.ReadLine()) != null)
{
fileContents.Append( WebUtility.UrlEncod(line)+ '%0A');
}

file.Close();

после этого

         Uri uri = new Uri("http://testapi.com");
         using(WebClient myWebClient = new WebClient())
         {
           myWebClient.Headers.Add("X-API-KEY",APIKEY);
           myWebClient.Headers.Add("Content-Type","application/x-www-form- urlencoded");

           string result = myWebClient.UploadString(uri ,"plu_str="+fileContents.ToString());
          }
...