[英]How to Convert form inputs to json array and send it as http post request in body, using c# in mvc5
[英]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.