【发布时间】:2018-10-31 06:38:58
【问题描述】:
private string PostWebRequest(string postUrl, string paramData)
{
byte[] bytes = Encoding.UTF8.GetBytes(paramData);
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
webReq.Method = "POST";
webReq.ContentType = "application/json";
webReq.ContentLength = bytes.Length;
using (Stream newStream = webReq.GetRequestStream())
{
newStream.Write(bytes, 0, bytes.Length);
}
using (WebResponse res = webReq.GetResponse())
{
Stream responseStream = res.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, Encoding.GetEncoding("UTF-8"));
string str = streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
return str;
}
}
当我设置 contentType 一个值时,它是失败的。像这样
异常:在 System.Net.WebConnection.HandleError (System.Net.WebExceptionStatus st,System.Exception e,System.String 其中)[0x00000] 在 :0 处 System.Net.WebConnection.ReadDone(System.IAsyncResult 结果) [0x00000] 在 :0 中 System.Net.Sockets.SocketAsyncResult+c.b__27_0 (System.Object 状态)[0x00000] 中 :0 在 System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () [0x00000] 在 :0 处 System.Threading.ThreadPoolWorkQueue.Dispatch() [0x00000] 中 :0 在 System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() [0x00000] 在:0 System.Net.WebConnection.HandleError (System.Net.WebExceptionStatus st, System.Exception e, System.String where) (at :0) 作为 WebException 重新抛出:错误 获取响应流(ReadDone2):ReceiveFailure
如果我没有设置 ContentType 一个值,它响应成功。
【问题讨论】:
-
将此
Stream responseStream = res.GetResponseStream();转换为 using 语句。可能不是答案,但让我们先清理一下这段代码...... -
newStream.Close();使用不起作用