HTTPクライアントを使用してWebサービスを呼び出すことはできますか?
はいの場合、いくつか例を挙げてください。そのWebサービスに存在するメソッドのリストを取得するにはどうすればよいですか?
例えば :
FahrenheitToCelsiusとCelsiusToFahrenheitの2つの関数があります
注:Webクライアントを使用してWebサービスを呼び出す方法は知っていますが、HTTPクライアントを使用してWebサービスを呼び出す必要があります
HTTPクライアントを使用してWebサービスを呼び出すことはできますか?
はいの場合、いくつか例を挙げてください。そのWebサービスに存在するメソッドのリストを取得するにはどうすればよいですか?
例えば :
FahrenheitToCelsiusとCelsiusToFahrenheitの2つの関数があります
注:Webクライアントを使用してWebサービスを呼び出す方法は知っていますが、HTTPクライアントを使用してWebサービスを呼び出す必要があります
はい、できます。たとえば、ApacheHttpClient4.2.1を使用します。
import java.io.File;
import java.io.IOException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.fluent.Content;
import org.apache.http.client.fluent.Request;
import org.apache.http.entity.ContentType;
public class HttpClientPost {
public static void main(String[] args) throws ClientProtocolException, IOException {
String request = "<soapenv:Envelope response xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
"xmlns:tem=\"http://tempuri.org/\"><soapenv:Header/><soapenv:Body>" +
"<tem:CelsiusToFahrenheit><tem:Celsius>100</tem:Celsius>" +
"</tem:CelsiusToFahrenheit></soapenv:Body></soapenv:Envelope>";
Content response = Request.Post("http://www.w3schools.com/webservices/tempconvert.asmx")
.bodyString(request, ContentType.TEXT_XML).execute().returnContent();
System.out.println("response: " + response);
}
}
メソッドについては、WSDLファイル内のoperationという名前の要素を確認してください。
WebサービスがHTTPプロトコルによって公開されている限り、それは確かです。ただし、応答を自分で解析し、有効な要求を自分で作成する必要があります。これらすべてが自動化されたApacheAxisのようなフレームワークを使用する方がはるかに簡単です。
また、このWebサービスはSOAPプロトコルを使用していることにも注意してください。これは、使用しようとするときに考慮する必要があります。