2012-09-20 22 views
0

是否可以使用HTTP Client調用Web服務?HTTP WebService

如果是給我一些例子。我如何獲得該Web服務中存在的方法列表?

例如:

我用這Web Service WSDL link

它有兩個功能FahrenheitToCelsius和CelsiusToFahrenheit

注: 我知道如何使用Web客戶端調用web服務,但我需要執行呼叫通過使用HTTP客戶端的webService

回答

0

只要Web服務通過HTTP協議公開就可以了。但是你必須自己解析答案,並自己構造有效的請求。更容易使用像這樣的框架,如Apache Axis,它具有所有這些自動化功能。

您還應該注意到,此Web服務正在使用SOAP協議,在您嘗試使用它時應考慮到這一點。

+0

我有點困惑,使用Apache Axis 2可以給你一個例子來獲取方法列表以及如何將參數傳遞給該方法 – Bucks

2

是的,你可以。例如。與Apache HttpClient 4.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文件中名爲操作的元素。

相關問題