C# .Net JBOSS AS 7 JAX-WS SOAP 通信 HTTP 圧縮 gzip 設定
C# と JBOSS 7 の間での SOAP 通信の際の HTTP の 圧縮設定
C# がクライアント、JBOSS 側が Webアプリケーションサーバ
JBOSS の設定
standalone.xml に <system-propeties> の部分を追加
<extensions> ..... </extensions> <system-properties> <property name="org.apache.coyote.http11.Http11Protocol.COMPRESSION" value="on"/> <property name="org.apache.coyote.http11.Http11Protocol.COMPRESSION_MIME_TYPES "value="text/javascript,text/css,text/html"/> </system-properties>
これで、JBOSSが受け付けるHTTPリクエストヘッダに、Accept-Encoding : gzip があれば、レスポンスデータを圧縮して返すようになる。
ので、C# 側で、SOAP 通信の際に、ヘッダの追加と、レスポンスを受け取った際の自動解凍設定をする
.Net Framework の SoapHttpClientProtocol を使用
C# 側のコード追加
http リクエストにヘッダを追加
protected override System.Net.WebRequest GetWebRequest(Uri uri) { System.Net.HttpWebRequest webRequest = (System.Net.HttpWebRequest)base.GetWebRequest(uri); webRequest.Add("Accept-Encoding","gzip, deflate"); return webRequest; }
ヘッダを追加したので、JBOSS側からgzipでデータが送られてくる。それを解凍するためには。
名前空間: System.Web.Services.Protocols
this.EnableDecompression = true;
これで自動で解凍してくれる。