簡體   English   中英

無法使用HttpWebResponse讀取響應數據

[英]Unable to read response data using HttpWebResponse

byte[] content = Encoding.UTF8.GetBytes(data);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(content,0,content.Length);
response = (HttpWebResponse)request.GetResponse(); 

reader = new StreamReader(response.GetResponseStream(),System.Text.Encoding.UTF8);
String resultData = reader.ReadToEnd();

我正在獲取數據作為響應,也在進行reader.ReadToEnd()的快速監視時,它在VS中顯示數據,但resultData始終為空。

知道我在這里做什么錯嗎?

如果在調試器中使用reader.ReadToEnd() ,那么當您嘗試在實際代碼中調用ReadToEnd() ,將不再有任何數據。

請注意,應將using語句用於響應,以便在完成后將其關閉。

您的代碼有多個問題( ContentLength應該是content.Length而不是data.Length ;應該處理可處置的資源),但是我不確定哪個是您看到的行為的原因。

但是,當您使用WebClient類時,您的代碼可以略微縮短:

using (var client = new WebClient())
{
    client.Headers[HttpRequestHeader.ContentType] = "application/json";

    string resultData = client.UploadString(url, data);
}

也許您可以檢查這種情況是否適合您的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM