2010-03-05 2 views
0

파이썬에서 webservices를 사용하는 응용 프로그램을 개발 중입니다. 양측 (서버 및 클라이언트)은 파이썬으로 개발되었으며 webservices에 SOAPpy를 사용합니다. 그러나 XML은 너무 장황합니다. 그것을 압축하기 위해,하지만 지금까지 내가 도움이되는 것을 찾을 수없는 구글에서 수색했다.soapy에 압축 xml

+0

결국 SOAPpy를 사용하지는 않았지만 xmlrpc 압축 방식은 블로그 포스트에 있습니다. http://tinyurl.com/2v4aokl (압축 XMLRPC, Python) – markuz

답변

2

012py과 같이 SOAPpy 호출에 HTTP 헤더를 추가 할 수 있습니다 (이 예에서는 쿠키를 보내지 만 일반화하여 다른 헤더를 추가 할 수 있음). 압축을 요청하려면 Accept-Encoding: gzip 헤더를 추가하십시오. 웹 서버 (파이어 폭스의 "SOAPpy 서버"와 같은 응용 프로그램 서버가 아니라 Apache에서 실행되는 실제 HTTP 서버 (예 : Apache))는 압축을 제공해야하며 응답에 헤더 Content-Encoding: gzip이 있어야합니다 제대로 작동하지 않는다면, 전송 클래스를 서브 클래스 화하고 거기에 압축을 삽입해야 할 것입니다. SOAPpy를 설치할 준비가되어 있지 않습니다.

더 이상 처리하기 전에 SOAPpy.SOAPProxy을 페이로드의 압축 해제로 트릭하고 올바른 방법은 다시 추가 헤더 부분과 마찬가지로 HTTPTransport의 하위 클래스로 다시 전송하는 것입니다. 위의 URL에서 data = response.read() 행을보고 (필요한 경우 콘텐츠 인코딩이 gzip인지 확인하기 위해) 헤더를 확인하고 필요에 따라 압축을 푸는 것이 좋습니다.

, 파이썬의 표준 라이브러리하고 .gz 파일을 읽을 헤더 메타 데이터 처리를 zlib에 추가 (안 gzip 모듈의 zlib 모듈을 사용할 수 있습니다 물론 gzip 압축 및 압축 해제, 처리하려면

- 당신이있어를 .gz 파일을 다루지는 않지만 스트림은 gzip 알고리즘으로 압축되어 있으며 그 스트림은 zlib의 작업입니다.

+0

정말 고마워요. 나는 이미 조리법을 보았지만, 나는 그것을 정말로 이해하지 못했다. 조금 더 명확 해 보이지 않았다. 다시 한번 감사드립니다. – markuz