I/O BLOG;

input を整理して ouput する訓練ブログ

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;

これで自動で解凍してくれる。