2012-10-17 2 views
3

WinHTTP를 사용하면 HTTP 헤더에 문제가있는 경우 WinHttpReceiveResponse가 ERROR_WINHTTP_INVALID_SERVER_RESPONSE를 반환합니다.WinHTTP에서 형식이 잘못된 경우에도 HTTP 응답을 검색하십시오.

형식이 잘못 되었음에도 불구하고 반환 된 데이터를 얻는 방법이 있습니까?

+0

다양한 언어로 다양한 방법이 있습니다. 어떤 프로그래밍 언어를 선호합니까 ?? – Searush

+0

예를 들어, ASP.NET/VB (iframe없이)로 알려줄 수 있습니다. – Searush

+0

WinHTTP는 API입니다. 어떤 언어 든 상관 없지만 예제 코드는 필요 없습니다. 나쁜 응답이 반환 된 후 WinHTTP에서 데이터를 가져 오는 방법에 대한 설명 만 있습니다. 하지만 WinHTTP를 사용해야합니다 – DougN

답변

2

이 경우 WinHTTP API를 우회하여 소켓을 사용하여 "원시"읽기를 수행하고 응답 헤더를 해석하려고 최선을 다해야합니다.

content-length과 일치하는 행을 찾을 수있는 경우 헤더가 유효하지 않더라도 최소한 모든 데이터를 가져올 수 있습니다. 이 방법을 사용하려면 디버거에서 코드를 실행하고 웹 서버에서 실제로 전송 한 내용을 보거나 패킷 스트림을 캡처하고 원시 바이트를 찾기 위해 첫 번째 패킷을 살펴보십시오.

결과는 응답의 실제 문제에 따라 결정됩니다.

+1

WinHTTP API를 아주 쉽게 벗어날 수는 없습니다. SSL, 인증, 프록시 등을 처리하고 모든 것을 다시 작성하지 않아도됩니다. 필자의 경우에는 오류가 발생하면 원시 코드를 로그에 덤프하여로드되지 않는 이유를 파악할 수있는 프로덕션 코드가됩니다. – DougN

관련 문제