0

HTTPクライアントを使用してWebサービスを呼び出すことはできますか?

はいの場合、いくつか例を挙げてください。そのWebサービスに存在するメソッドのリストを取得するにはどうすればよいですか?

例えば ​​:

このWebサービスWSDLリンクを使用しています

FahrenheitToCelsiusとCelsiusToFahrenheitの2つの関数があります

注:Webクライアントを使用してWebサービスを呼び出す方法は知っていますが、HTTPクライアントを使用してWebサービスを呼び出す必要があります

4

2 に答える 2

2

はい、できます。たとえば、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という名前の要素を確認してください。

于 2012-09-20T14:22:02.493 に答える
0

WebサービスがHTTPプロトコルによって公開されている限り、それは確かです。ただし、応答を自分で解析し、有効な要求を自分で作成する必要があります。これらすべてが自動化されたApacheAxisのようなフレームワークを使用する方がはるかに簡単です。

また、このWebサービスはSOAPプロトコルを使用していることにも注意してください。これは、使用しようとするときに考慮する必要があります。

于 2012-09-20T13:16:49.437 に答える