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プログラミング

  • 作者: グラハムグラス,Graham Glass,尾形隆彦,石井真,木村和之
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2002/08
  • メディア: 単行本
  • クリック: 31回
  • この商品を含むブログ (2件) を見る