我正在尝试在C#中发布一些json数据。 到目前为止,我已经尝试了两种方法。一个使用HttpWebRequest(工作原理,下面提供更多信息),另一个使用httpClient(我宁愿使用此功能)。
Method:httpClient
using (HttpClient client = new HttpClient())
{
var content = new StringContent(postData, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
responseString = await response.Content.ReadAsStringAsync();
}
方法:HttpWebRequest
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.Method = "POST";
byte[] data = Encoding.ASCII.GetBytes(postData);
myHttpWebRequest.ContentType = "application/json";
myHttpWebRequest.ContentLength = data.Length;
Stream requestStream = await myHttpWebRequest.GetRequestStreamAsync();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
HttpWebResponse myHttpWebResponse = (HttpWebResponse)await myHttpWebRequest.GetResponseAsync();
Stream responseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(responseStream, Encoding.Default);
string pageContent = myStreamReader.ReadToEnd();
myStreamReader.Close();
responseStream.Close();
myHttpWebResponse.Close();
两个都给出错误:无法从传输连接中读取数据:连接已关闭。
将此行添加到第二种方法即可解决此问题。
myHttpWebRequest.ProtocolVersion = HttpVersion.Version10;
我不明白为什么会这样。有没有一种方法可以使用httpClient执行此操作,因为我更愿意使用它。 任何帮助表示赞赏。谢谢。