2011-02-01 4 views
1

.net 3.0 앱에서 웹 서비스 참조를 사용하고 있으며 gzip 디코딩을 설정하려고합니다.httpWebRequest.AutomaticDecompression이 "Accept_Encoding : gzip"헤더를 설정하지 않았습니다.

SoapUI를 사용할 때 요청에 'Accept-Encoding : gzip, deflate'헤더가 설정되어 있기 때문에 응답이 gzip으로 압축됩니다. 내 .net 요청을 보낼 때이 헤더가 없으므로 서버가 응답을 압축하지 않습니다.

나는 정확히 내가하고 싶은 것을 설명하는 link을 발견했다. 코드를 구현하고 디버거에서 모든 요청에 ​​대해 실행되고 있는지 확인했지만 여전히 'Accept-Encoding : gzip'헤더를 추가하지 않습니다.

다음 링크에서 클래스의 헤더를 수동으로 추가했습니다.

httpWebRequest.Headers.Add("Accept-Encoding", "gzip"); 

마지막으로 서버에서 압축 된 응답을 받았습니다. 그러나 아니오, 지금은 링크가있는 클래스를 사용하여 다음과 같이 설정되어 있어도 응답이 압축 해제되지 않기 때문에 잘못된 형식의 xml 예외가 발생합니다.

httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip;; 

나는 무엇이 잘못되고 있는지 이해할 수 없습니다.

+1

'.AutomaticDecompression = DecompressionMethods.GZip;'자신이 AutomaticDecompression을 방해 할 수있는''Accept-Encoding ''헤더를 추가합니다. '(HttpWebRequest) WebRequest.Create()'도 사용해야하는데, 링크 된 페이지에서 사용 된 추악한 반사의 기사입니다. – nos

+0

웹 참조를 사용하고 있기 때문에 참조 된 API에서 메소드를 호출하고 명시 적으로 웹 요청을 작성하지 않았습니다. 그 창조물은 .net에 의해 어떻게 든 처리됩니다. 그래서 나는이 반사 코드를 사용했습니다. "Accept-Encoding"에 대한 헤더를 추가하지 않으면 .AutomaticDecompression = DecompressionMethods.GZip을 설정하더라도 요청에 해당 헤더가 없습니다. 웹 참조를 사용하고 있기 때문에이 문제가 발생합니까? – Tbonebrad

답변

2

좋아, 내 문제에 대한 해결책을 찾았습니다.

웹 참조를 사용하고 있으므로 웹 참조 개체에 EnableDecompression = true을 설정해야합니다.

그래서 해결책은 ReferredService 웹 참조 이름이

var client = new ReferredService 
       { 
        EnableDecompression = true 
       } 

같은 것입니다.

관련 문제