2011-04-08 9 views
0

다음에서는 ar.GetResponseAsString()이 예외를 throw합니다.상태가 400 일 때 HTTPWebRequest에서 응답 본문을 볼 수 없습니다.

AsyncCallback GetTheResponse = ar => 
{ 
    try 
    { 
     var result = ar.GetResponseAsString(); 
     Debug.WriteLine(string.Format("ResponseStream:::{0}", result)); 
     callback(result, null); 
    } 
    catch (Exception ex) 
    { 
     Debug.WriteLine(ex.ToString()); 
    } 
} 

내가 잘못 뭐하는 거지 : 여기

내 코드?

+0

예외 메시지는 무엇입니까? –

+0

"원격 서버가 오류를 반환했습니다 : NotFound." 문제는 Whurl을 사용하여 동일한 호출을 복제 한 것입니다. https://whurl.heroku.com 상태가 400인데도 응답 본문이 있습니다 (현재 얻으려고하는 부분 임). { "사용자": { "오류": { "암호" } }, "오류" "(최소 4 자) 너무 짧다": { "httpCode": 400, "메시지 ":"사용자에 대한 잘못된 매개 변수 " } } – Roger

답변

2

400이 던지고있는 WebException을 잡아 당겨 예외 메시지에서 응답을 가져옵니다. 그것이 오류 응답이 숨어있는 곳입니다.

+0

네 ... AsyncCallback GetTheResponse = AR => 가 { 시도 { var result = ar.GetResponseAsString(); 콜백 (결과, null); } catch (WebException ex) { Stream stream = ex.Response.GetResponseStream(); StreamReader reader = 새 StreamReader (스트림); string result = reader.ReadToEnd(); Debug.WriteLine (result); } – Roger

관련 문제