繁体   English   中英

如何发送带有正文字符串数组的发布请求

[英]How to send a post request with array of strings in the body

我正在尝试在控制台应用程序中使用数组(如果在正文中包含字符串)发送和http发布请求,但是它不起作用。

这是代码:

WebRequest request = WebRequest.Create(Url);
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
string[] firstData = { "89", "354", "AF001" };
StreamWriter requestWriter = new StreamWriter(request.GetRequestStream());
requestWriter.Write(firstData);
requestWriter.Close();

string[] secondData = { "8911", "354", "01" };;
StreamWriter requestWriter2 = new StreamWriter(request.GetRequestStream());
requestWriter2.Write(secondData);
requestWriter2.Close();

您不能重复使用相同的WebRequest流,这是在两个StreamWriter实例上调用request.GetRequestStream时所做的。 这就是为什么它引发异常。 我不确定为什么您每次两次将请求流发送到另一个StreamWriter 您可以将它们简单地组合为一个:

WebRequest request = WebRequest.Create(Url);
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";

using (StreamWriter requestWriter = new StreamWriter(request.GetRequestStream()))
{
    string[] firstData = { "89", "354", "AF001" };
    requestWriter.Write(firstData);

    string[] secondData = { "8911", "354", "01" }; ;
    requestWriter.Write(secondData);
}

附带说明一下,您可以使用WebClient大大减少代码的冗长性:

using (var webClient = new WebClient())
{
    webClient.Headers[HttpRequestHeader.ContentType] = "application/json";
    webClient.UploadData(Url, Encoding.UTF8.GetBytes(firstData));
    webClient.UploadData(Url, Encoding.UTF8.GetBytes(secondData));
}

我将string[]更改为var ,并且有效:

 WebRequest request = WebRequest.Create(apiUrl);
 request.Method = "POST";
 request.ContentType = "application/json;charset=UTF-8";

 data = "[ \"89\", \"354\", \"AF001\" ]";

 StreamWriter requestWriter = new StreamWriter(request.GetRequestStream());

 requestWriter.Write(data);

 requestWriter.Close();



  WebResponse response = request.GetResponse();
  Console.WriteLine(((HttpWebResponse)response).StatusDescription);

  response.Close();

  request = WebRequest.Create(url);
  request.Method = "POST";
  request.ContentType = "application/json;charset=UTF-8";


   StreamWriter requestWriter2 = new StreamWriter(request.GetRequestStream())

   var data2 = ""[ \"55\", \"3524\", \"b01\" ]";

   requestWriter2.Write(data2);
   requestWriter2.Close();

   WebResponse response2 = request.GetResponse()
   Console.WriteLine(((HttpWebResponse)response2).StatusDescription);

为第二个请求创建了新的WebResponse和StreamWriter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM