2012-10-16 3 views
2

여기는 질문과 비슷합니다 : httpWebRequest - get error content 그러나 나는 답변을 얻기 위해 더 많은 정보를 제공하기를 희망합니다.HttpWebRequest를 사용하여 404 오류에서 콘텐츠 가져 오기

저는 C#을 사용하여 LinkedIn API와 통합하고 있습니다.

HTTP/1.1 404 Not Found 
Server: Apache-Coyote/1.1 
x-li-request-id: VL2EER2ROJ 
Date: Tue, 16 Oct 2012 08:52:59 GMT 
Vary: * 
x-li-format: xml 
Content-Type: text/xml;charset=UTF-8 
Content-Length: 266 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<error> 
    <status>404</status> 
    <timestamp>1350377580000</timestamp> 
    <request-id>VL2EER2ROJ</request-id> 
    <error-code>0</error-code> 
    <message>Could not find member {/people/XXXXXX}</message> 
</error> 

내가 특별히 오류 XML을 좀하고 싶습니다 그러나 HttpWebRequest를 단순히를 던질 것으로 보인다 : 나는 API에 무효 전화를 걸 때 (피들러에서) 등과 같은 HTTP 응답을 반환 할 수 있습니다 예외를 겪은 다음 내용과 관련이 없습니다. 내 디버거에서 내용 길이가 266 인 것을 볼 수는 있지만 (System.Net.WebException).Response.GetResponseStream()을 호출하려고 시도하면 stream was not readable 예외가 발생합니다.

비 200 HTTP 상태 응답에서 오류 메시지를 반환하는이 방법은 웹 API를 꽤 인기있는 것 같다

- 나는 이러한 응답에서 얻을 수있는 방법이 바라고 있어요 ...

+0

[읽으십시오 설명서] (http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.getresponse.aspx) : _ "** 참고 ** : WebException이 throw되면 예외 **의 Response 및 Status 속성 **을 사용하여 서버에서 응답을 확인하십시오. "_ [this duplicate] (http://stackoverflow.com/questions/11828843/c-sharp-webexception-how 참고) 몸과 함께 전체 응답을 얻을 수 있습니다. – CodeCaster

+0

.NEt의 버전은 무엇입니까? 버그 같은데. system.net 추적 로그를 가져 와서 msdn 커뮤니티 사이트에서 버그 보고서를 작성하십시오. BTW에서 코드를 보여줄 수 있습니까? 어쩌면이 일을하기 위해 바뀔 수있는 것이 있을까요? – feroze

+0

@CodeCaster : 질문에서 언급 한 것처럼 응답 스트림에 액세스하려고하면 "스트림에서 읽을 수 없습니다"예외가 발생합니다. 참조 된 복제물에 제공된 대답이 올바르지 않습니다. – GrantDG

답변

2

당신은 아마해야합니다 소켓 연결을 직접 눌러 응답 xml을 얻습니다. https://stackoverflow.com/a/6755142

아마존의 오프 아마존 결제 API를 구현하는 동안 나는 같은 일을 실행 해요 :

이 답변을 참조하십시오. 잘못된 트랜잭션 ID를 전달하면 404 오류가 반환됩니다 ... 내가 기대했던 것이 아닙니다.

참고 : http 게시를 보낼 때 비동기를 사용하며이 404는 BeginGetResponse 메소드에서 WebException을 throw합니다. 콜백에서 응답을 읽으려고 할 때가 아닙니다. 반대로 400 개의 잘못된 요청 WebException이 콜백에서 응답 스트림을 읽는 동안 발생합니다.

관련 문제