当前位置:首页 » 编程语言 » 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");
在根据节点名称逐步获取

热点内容
vs编译找不到指定项目文件 发布:2025-02-08 12:36:54 浏览:242
怎样用windows服务器搭建网站 发布:2025-02-08 12:27:38 浏览:532
android获取音乐 发布:2025-02-08 12:26:05 浏览:962
存储的数据可以复制吗 发布:2025-02-08 12:20:22 浏览:852
scraino编程 发布:2025-02-08 11:59:41 浏览:265
我的世界服务器进不去该怎么办 发布:2025-02-08 11:47:41 浏览:236
linux的telnet 发布:2025-02-08 11:47:36 浏览:288
压缩袋打折 发布:2025-02-08 11:46:02 浏览:259
c语言结构体题目 发布:2025-02-08 11:46:01 浏览:339
如何svn限制一些外网不能访问 发布:2025-02-08 11:46:00 浏览:992