A. 如何用java來獲取webservice數據
Java調用WebService可以直接使用Apache提供的axis.jar自己編寫代碼,或者利用Eclipse自動生成WebService Client代碼,利用其中的Proxy類進行調用。理論上是一樣的,只不過用Eclipse自動生成代碼省事些。以下是使用Java代碼獲取WebService數據的一個實例:
1. 編寫代碼方式:
package com.yun.test;
import java.rmi.RemoteException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.PrefixedQName;
import org.apache.axis.message.SOAPHeaderElement;
import com.cezanne.golden.user.Exception;
import com.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import java.net.MalformedURLException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
public class testWebService {
public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException {
//標識Web Service的具體路徑
String endpoint = "WebService服務地址";
// 創建 Service實例
Service service = new Service();
// 通過Service實例創建Call的實例
Call call = (Call) service.createCall();
//將Web Service的服務路徑加入到call實例之中.
call.setTargetEndpointAddress(new java.net.URL(endpoint));//為Call設置服務的位置
// 由於需要認證,故需要設置調用的SOAP頭信息。
Name headerName = new PrefixedQName(new QName("發布的wsdl里的targetNamespace里的url", "string_itemName"));
org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);
header.addTextNode("blablabla");
call.addHeader(header);
// 設置SOAPHeaderElement
Name soapHeaderName = new PrefixedQName(new QName("發布的wsdl里的targetNamespace里的url", "SoapHeader"));
SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(soapHeaderName);
call.addHeader(soapHeaderElement);
// 執行調用並返回結果
Object result = call.invoke(new Object[]{});
return result.toString();
}
}
以上代碼示例展示了如何通過Java代碼調用WebService,包括設置服務地址、添加SOAP頭信息以及執行調用。需要注意的是,這里的代碼需要根據實際的WebService服務地址和認證信息進行調整。
另外,如果想要使用Eclipse自動生成的代碼進行調用,可以按照以下步驟操作:
1. 在Eclipse中打開項目,右鍵選擇「New」 -> 「Web Services」 -> 「Client」;
2. 指定Web Service的URL和WSDL文件路徑;
3. 生成客戶端代碼後,可以使用生成的Proxy類進行調用,示例如下:
UserManagerServiceProxy proxy = new UserManagerServiceProxy();
String result = proxy.someMethod();
以上就是使用Java獲取WebService數據的基本方法,希望對您有所幫助。
B. java語言使用post方式調用webService方式
WebService可以通過多種方式調用,包括Get、Post、Soap和Document等。下面通過Java語言展示如何使用Post方式調用WebService的具體實現代碼:
首先定義一個名為ClientTest的類,該類包含一個名為post的方法,用於演示HTTP-POST調用。
在post方法中,首先導入必要的Java庫和Apache CXF庫。接著創建一個URL對象,指向要調用的WebService地址,例如:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity。
通過URL對象打開一個URLConnection,並設置允許輸出數據。然後創建一個OutputStreamWriter對象,用於向伺服器發送POST數據。這里以「byProvinceName=福建」作為示例數據發送。
接著創建一個BufferedReader對象,用於從伺服器讀取響應數據。通過URLConnection的getInputStream方法獲取輸入流,然後使用BufferedReader讀取伺服器返回的內容。
最後,將讀取到的內容添加到一個StringBuilder對象中,並返回最終的響應字元串。
需要注意的是,該示例代碼中包含了異常處理邏輯,確保在發生異常時能夠正確地關閉OutputStreamWriter,防止資源泄露。
通過上述步驟,可以使用Java語言通過POST方式成功調用指定的WebService,獲取所需的數據或服務。
這種方法適用於需要發送復雜數據或需要攜帶大量參數的場景。同時,Post方式提供了更靈活的數據傳輸機制,能夠更好地滿足各種Web服務調用需求。
C. java調用webservice介面
Java調用webservice介面有三種主要方法:
直接AXIS調用遠程的webservice:
直接SOAP調用遠程的webservice:
使用Eclipse生成客戶端代碼:
注意:以上方法均需要相應的庫支持,如Apache AXIS庫或JAXWS庫。在實際開發中,選擇哪種方法取決於具體需求和項目環境。