當前位置:首頁 » 編程語言 » java調用soap

java調用soap

發布時間: 2022-06-07 19:01:47

java中怎麼用soapui調用webservice

下載SoapUI

安裝SoapUI,如下圖1,然後一步一步,直至安裝完成。完成後桌面上會顯示安裝後的圖標。

點擊安裝好的圖標進入主界面。

點擊SOAP,進行添加WebService地址

把需要調用的WebService 地址輸入到圖片中的文本框中。

上一步完成後,主界面左邊會出現一個項目。點擊左邊項目方法裡面的進行調用

❷ java如何調用webservice介面

Java通過WSDL文件來調用webservice:

注意,以下的代碼並沒有經過真正的測試,只是說明這些情況,不同版本的Axis相差很大,大家最好以apache網站上的例子為准,這里僅僅用於說明其基本用法。
1,直接AXIS調用遠程的web service
這種方法比較適合那些高手,他們能直接看懂XML格式的WSDL文件,我自己是看不懂的,尤其我不是專門搞這行的,即使一段時間看懂,後來也就忘記了。直接調用模式如下:
import java.util.Date;
import java.text.DateFormat;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.lang.Integer;
import javax.xml.rpc.ParameterMode;

public class caClient {

public static void main(String[] args) {

try {
String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";
//直接引用遠程的wsdl文件
//以下都是套路
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("addUser");//WSDL裡面描述的介面名稱
call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,
javax.xml.rpc.ParameterMode.IN);//介面的參數
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//設置返回類型

String temp = "測試人員";
String result = (String)call.invoke(new Object[]{temp});
//給方法傳遞參數,並且調用方法
System.out.println("result is "+result);
}
catch (Exception e) {
System.err.println(e.toString());
}
}
}
2,直接SOAP調用遠程的webservice
這種模式我從來沒有見過,也沒有試過,但是網路上有人貼出來,我也轉過來
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;

import java.io.*;
import java.net.*;
import java.util.Vector;

public class caService{
public static String getService(String user) {
URL url = null;
try {
url=new URL("http://192.168.0.100:8080/ca3/services/caSynrochnized");
} catch (MalformedURLException mue) {
return mue.getMessage();
}
// This is the main SOAP object
Call soapCall = new Call();
// Use SOAP encoding
soapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
// This is the remote object we're asking for the price
soapCall.setTargetObjectURI("urn:xmethods-caSynrochnized");
// This is the name of the method on the above object
soapCall.setMethodName("getUser");
// We need to send the ISBN number as an input parameter to the method
Vector soapParams = new Vector();

// name, type, value, encoding style
Parameter isbnParam = new Parameter("userName", String.class, user, null);
soapParams.addElement(isbnParam);
soapCall.setParams(soapParams);
try {
// Invoke the remote method on the object
Response soapResponse = soapCall.invoke(url,"");
// Check to see if there is an error, return "N/A"
if (soapResponse.generatedFault()) {
Fault fault = soapResponse.getFault();
String f = fault.getFaultString();
return f;
} else {
// read result
Parameter soapResult = soapResponse.getReturnValue ();
// get a string from the result
return soapResult.getValue().toString();
}
} catch (SOAPException se) {
return se.getMessage();
}
}
}
3,使用wsdl2java把WSDL文件轉成本地類,然後像本地類一樣使用,即可。
這是像我這種懶人最喜歡的方式,仍然以前面的global weather report為例。
首先 java org.apache.axis.wsdl.WSDL2Java http://www.webservicex.net/globalweather.asmx.WSDL
原本的網址是http://www.webservicex.net/globalweather.asmx?WSDL,中間個各問號,但是Linux下面它不能解析,所以去掉問號,改為點號。
那麼就會出現4個文件:
GlobalWeather.java GlobalWeatherLocator.java GlobalWeatherSoap.java GlobalWeatherSoapStub.java
其中GlobalWeatherSoap.java是我們最為關心的介面文件,如果你對RMI等SOAP實現的具體細節不感興趣,那麼你只需要看介面文件即可,在使用的時候,引入這個介面即可,就好像使用本地類一樣。

❸ java使用HTTPURLCONNECTION調用SOAP介面如何處理返回參數過大的問題

試試下面兩種思路

  1. 可以分批次請求,一次返回一部分。一般來說10M以內都是可以接受

  2. 伺服器端返回一個文件,客戶端直接接受文件。(這里接受文件肯定要用流的形式,不能用byte數組)

❹ 關於java,soap伺服器端的代碼怎麼寫

<soapenv:Header/>
<soapenv:Body>
<api:getEmp>
<shopId>string</shopId>
</api:getEmp>
</soapenv:Body>
</soapenv:Envelope>
這個時SOAP協議的標准報文格式,客戶端只要發送這樣的報文給支持SOAP協議的webservice伺服器即可成功調用web service服務
服務端:部署服務只需要自己定義服務的介面和實現類,並用@webservice註解,通過endPoint類直接發布即可

❺ java怎麼用soap的方式訪問一個介面

我之前寫的一個實驗是soap機制的,你看可以么,以下是實驗內容
Web service 其運作原理如下 (下圖引用官方網站簡介):
+--------------------------------------+
web service registry
(aka service broker)
(UDDI)
+--------------------------------------+
^ ^

(2) (1)
(the client (the web service
WSDL finds the WSDL provider publishes
service the web service)
they want)

v v
+-----------+ +-----------+
service <--soap--> service
requestor provider
+-----------+ (3) +-----------+

(1) 發布 Web Service.
(2) 尋找已發布的 Web Service.
(3) 通過 SOAP 互相溝通.
(1) 及 (2) 均為 optional.

WSDL -- Web Services description Language. WSDL 描述 web service 的功能.
UDDI -- Universal Description, Discovery and Integration. 發布 web service 的協定.
SOAP -- Simple Object Access Protocol. SOAP 通過 HTTP 傳送 XML message.

❻ 怎麼把一個java對象轉換成soap

對於一個
webservice
來說,對方提供介面,你只需要調用就可以了,不需要自己來寫,另外請求的時候是一個url來獲取一個wsdl,在wsdl裡面再獲取soap對象!
給你點例子
url
=
new
URL("http://192.168.7.17:8081/Test9.CoTest9/wsdl/ITest9";
call
=
new
Call();
call.setTargetObjectURI("urn:CoTest9");
call.setMethodName("
GetMessage
");
call.setEncodingStyleURI(
Constants
.NS_URI_SOAP_ENC);

❼ java WebService介面採用SOAP協議的調用

到對方提供的url測試地址去下載wsdl協議,在把協議轉成java文件,根據生成的java和報文範例寫你的客戶端代碼就行了。

❽ java怎麼調用domino中soap編碼格式為doc/原意的webservice

所用到的java知識就是URL、URLConnection、HttpURLConnection三個對象,本站很多博客中有詳細介紹它們的使用,我這里就不多說了。下面介紹如何訪問Webservice:

首先在Domino中發布一簡單的Webservice,可以從IBM官網文章中找到學習的例子,如下在Designer中使用Java編寫簡單Webservice(這里不詳細介紹如何創建/發布Websercive):DatabaseInfo 提供一介面getUserRolesArray,通過NotesID返回其擁有的所有角色名稱。

Java代碼
import lotus.domino.*;
import lotus.domino.types.*;
import java.util.Vector;

public class DatabaseInfo {
private Session session;
private AgentContext agentContext;
private Database db;

public DatabaseInfo () throws Exception {
session = WebServiceBase.getCurrentSession();
agentContext = session.getAgentContext();
db = agentContext.getCurrentDatabase();
}
public String[] getUserRolesArray (String userName) throws Exception {
Document doc = agentContext.getDocumentContext();
Vector v = getRoles(userName);
return (String[])v.toArray(new String[1]);
}
//獲取賬號擁有的角色名稱
private Vector getRoles (String userName) throws Exception {
ACL acl = db.getACL();
ACLEntry entry = acl.getEntry(userName);
if (entry == null) {
return new Vector();
} else {
return entry.getRoles();
}
}
}

其次在Designer中創建一java腳本庫,用於連接、發送Soap請求、返回結果的類:WebServiceClient 提供連接方法openWSDLURL,發送Soap請求並返回結果的方法sendSOAPRequest等
最後在Designer中創建一代理,可以使用java編寫代理,也可以使用Lotusscript編寫代理,下面以Lotusscript編寫代理,調用上面編寫java類訪問Websercive(用java編寫代理也可以直接調用)。
詳細代碼設計無法直接貼在上面,以附件方式上傳,請見附件。
調試過程中可以通過SoapUI(最新版SoapUI3.6)測試Webservice介面,查看其調用Webserivce時發送的Soap請求(包括header、body等信息)。

❾ java調用java的soap介面,參數在服務端變成null的了

先用SOUPUI測試一下WEBSERVICE介面,如果SOUPUI測試服務端沒有問題就說明是客戶端有問題。

❿ JAVA 如何解析soap

SAXReader reader = new SAXReader(); Document document = reader.read(file.getInputStream()); Element root document.getRootElement();
Element header = root.element("RequestData");
在根據節點名稱逐步獲取

熱點內容
如何獲得列印機無線密碼 發布:2024-05-04 06:44:59 瀏覽:417
上古諸神錄哪裡改密碼 發布:2024-05-04 06:43:55 瀏覽:262
灌籃高手手游自動蓋帽腳本 發布:2024-05-04 06:42:31 瀏覽:424
javajs引擎 發布:2024-05-04 06:37:33 瀏覽:797
javalist重復 發布:2024-05-04 06:19:27 瀏覽:510
max腳本管理 發布:2024-05-04 06:02:31 瀏覽:45
自行搭建伺服器 發布:2024-05-04 06:01:12 瀏覽:125
h3c如何查看所有配置 發布:2024-05-04 05:26:39 瀏覽:493
java統計字元串中字母個數 發布:2024-05-04 05:22:58 瀏覽:888
throwablejava 發布:2024-05-04 05:22:56 瀏覽:792