2011-11-21 3 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

코드에 여러 가지 문제가 있습니다 (ContentLengthcontent.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

관련 문제