2013-08-06 2 views
1

웹 서비스를 사용하는 Windows Phone 8 앱을 개발 중입니다. 이 특정 웹 서비스에는 엔티티 본문과 함께 GET 요청이 필요합니다.System.Net.Http.HttpClient가 엔티티 본문과 함께 GET 요청을 보내도록 지원합니까?

저는 System.Net.Http.HttpClient를 사용하여이 요청을 보내고 있습니다.이 요청은 다양한 웹 요청 (GET, POST 및 PUT)을 보내는 데 성공적으로 사용되었습니다. 이것은 페이로드를 포함하는 첫 번째 GET 요청이므로 Content-Type 및 Content-Length 헤더를 포함합니다.

'TaskHost.exe'(CLR의 C : \ WINDOWS \ system32를 \ coreclr.dll : 실버의 AppDomain)로드 'C : \ WINDOWS \ system32를 \ EN

요청은 다음과 같은 예외가 실패 -US \ mscorlib.debug.resources.dll '. 모듈은 기호없이 만들어졌습니다. System.Windows.ni.dll에서 'System.Net.ProtocolViolationException'유형의 예외가 발생했으며 관리/네이티브 경계 전에 처리되지 않았습니다. mscorlib에서 'System.Net.ProtocolViolationException'유형의 첫 번째 예외가 발생했습니다. ni.dll mscorlib.ni.dll에서 'System.Net.ProtocolViolationException'유형의 예외가 발생했으며 관리/네이티브 경계 전에 처리되지 않았습니다.

GET 요청이있는 페이로드를 포함하면 약간 이상합니다. RFC에 의해 명시 적으로 금지되지 않은 내 연구.

웹 서비스를 변경할 수있는 옵션이 없습니다. System.Net.Http.HttpClient가 엔티티 본문과 함께 GET을 허용하지 않습니까? 그렇지 않은 경우 해결 방법이 있습니까?

감사합니다.

답변

1

나는 당신이 이것을 물어 본 이래로 있지만, 어쨌든 간다.

GET 요청의 본문에 페이로드를 보내는 것이 RFC의 클라이언트 쪽을 위반하지 않을 수도 있지만 일반적인 관행에 어긋납니다. RFC의 이하는 일은입니다. 이러한 요청을내는 서버는 요청 URI와 Host : 헤더 이외의 것을 보지 않아도 응답이 무엇인지 판단해야합니다.

RFC2616의 HTTP 1.1 사양을 인용하면 섹션 5.2는 다음과 같이 말합니다. "인터넷 요청으로 식별되는 정확한 자원은 Request-URI 및 Host 헤더 필드를 모두 검사하여 결정됩니다." 요청 본문에 대해서는 아무 것도 말하지 않습니다.

즉, 수행하려는 작업이 RFC를 위반하지 않아도 WP8 앱 이 사용하는 웹 서비스는입니다. 옵션을 사용하지 않고 사용하려면 자신의 HTTP-ish 클라이언트를 배포해야하는 것처럼 보입니다. 이제는 이미 완료했을 것으로 추측됩니다. System.Net.Http.HttpClient의 기성품 솔루션은 호환 서버와 통신하는 동안 결코 사용되지 않는 동작을 나타내지 않습니다.

관련 문제