2011-11-21 50 views
0
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總是空。無法讀取響應數據使用HttpWebResponse

任何想法我在這裏做什麼錯?

+0

任何你不使用[WebClient]的原因(http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx)? – dtb

+0

無論何時處理實現'IDisposable'的對象,即'StreamReader' /'WebResponse',您都應該使用'using'語句。閱讀http://msdn.microsoft.com/en-us/library/yh598w02.aspx – James

回答

3

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

請注意,您應該使用using聲明作爲響應,以便在完成後關閉它。

+0

啊去吧..謝謝 – BreakHead

-2

您的代碼有多個問題(ContentLength應該是content.Length而不是data.Length;應該丟棄一次性資源),但我不確定哪一個人對您所看到的行爲負責。

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

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

也許你可以檢查這是否在您的情況:

然而,你的代碼可以稍微當你使用WebClient Class縮短。

+0

(如何)確實設置了正確的'ContentType'? – wal