IThaiのブログ

IT関連の話題やタイに関する様々なことを書いていきます。

SOAPリクエストをjavaで作成する方法を調べる

 SOAPを使ってシステム連携をすることになったので、簡単にSOAPについて調べます。

SOAPは、Web サービスとWeb サービスとでデータの通信に使用されるプロトコルの1つ。

TCP/IPのアプリケーション層に位置するHTTP(S)プロトコルなどの上位に位置している。

SOAPでHTTPプロトコルを使う場合、リクエストを待ち受けているWebサーバにメッセージを送信し、Webサーバ上のオブジェクトのメソッドを呼び出す。

・メッセージを受け取ったSOAPサーバでは、呼び出されたオブジェクトのメソッドが実行されてレスポンスを返す。

SOAPのメッセージ表現はXMLで行われ、以下のような表現になる。

<soap-env:envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <soap-env:header>
    </soap-env:header>
    <soap-env:body>
</soap-env:body>
</soap-env:envelope>
*<soap-env:header>は任意です。

Javaで上記メッセージを送信するHTTPリクエストを作成してみます(使用するのはApacheのhttpClientライブラリ)。

    HttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost("http://localhost:8080/example");
    String body = "上記メッセージXML";
    StringEntity entity = new StringEntity(body,"UTF-8");
    httpPost.setEntity(entity);
    httpPost.addHeader("Accept" , "text/xml");
    httpPost.addHeader("SOAPAction","");
    HttpResponse response = null;
	try {
		response = httpClient.execute(httppost);
		HttpEntity entity = response.getEntity();
		String response = null;
		if(entity!=null) {
		    response = EntityUtils.toString(entity);
		}
	} catch (Exception e){
	}

SOAPでHTTPリクエストを送信するためには、HTTPヘッダーにSOAPActionフィールドが必要です。

ここには、wsdlのActionを設定します。時にはwsa:だったりします。

 

Webサービス入門―Javaを使って覚える簡単SOAP、WSDL、UDDIプログラミング

Webサービス入門―Javaを使って覚える簡単SOAP、WSDL、UDDIプログラミング