java调用webservicejava调用别人写好的webservice接口,在线等
java调用webservice 时间:2021-06-02 阅读:(
)
java中如何调用webservice接口来取得数据
Java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。
理论上是一样的,只不过用Eclipse自动生成代码省事些。
1、编写代码方式:
.yudun.test;
import java.rmi.RemoteException;
.apache.axis.client.Call;
.apache.axis.client.Service;
.apache.axis.message.PrefixedQName;
.apache.axis.message.SOAPHeaderElement;
.cezanne.golden.user.Exception;
.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import .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 .URL(endpoint) );//为Call设置服务的位置
// 由于需要认证,故需要设置调用的SOAP头信息。
Name headerName = new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url", "string_itemName") );
.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);
header.addTextNode( "blablabla" );
call.addHeader(header);
// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader");
// soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");
// try
// {
// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
// }
// catch (SOAPException e)
// {
// e.printStackTrace();
// }
// call.addHeader(soapHeaderElement);
//调用Web Service的方法
.apache.axis.description.OperationDesc oper;
.apache.axis.description.ParameterDesc param;
oper = .apache.axis.description.OperationDesc();
oper.setName("opName");
param = .apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"),.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = .apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"),.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = .apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"),.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);java调用webservice接口具体怎么调用啊?有没有简单点的
最简单的就是直接弄一个URL类。
通过buffer得到结果。
URL?tmp?=?new?URL(url);
URLConnection?connection?=?tmp.openConnection();??
connection.connect();?
BufferedReader?reader?=?new?BufferedReader(new?InputStreamReader(connection.getInputStream()));
String?line;?
while((line?=?reader.readLine())!=?null){??
????result?+=?line;??
????result?+=?"
";??
}
//result就是了关于Webservice接口的Java客户端调用
String endpoint="http://localhost:8080/xxx/services/userservice?wsdl";
String id = "11111";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL(endpoint));
call.setOperationName("webservice方法名");
String res = (String) call.invoke(new Object[] {id});
看了你的描述觉得你把webservice想得太复杂化了,其实就是一个jar包和几个类。
以上就是最简单的webservice客户端用法,和反射有点像。
当然返回值不一定是String,返回的类型和格式要问服务提供方。
我用的是axis的,我不了解websphere什么的,但是webservice就是那么易用的东西。
用Java调用webservice,并解析返回值,大神们 求助
你是哪个公司?我在上班,我不能上QQ,我给你贴代码,有问题你追问我!
private void 方法名(String storecd) {
// 传递参数
param.clear();
param.put("webservice的输入值的名字,(必须完全一样)", 参数);
//连接web service
openRequest(getString(R.string.EXSERVER_SCRAP_GetShipName), param,
essMode.Asynchronous, essHandler);
}
//数据处理
private essHandler essHandler = new essHandler(
this) {
@Override
//数据异常处理
public void onExceptionHandler(PacerURLRequest request, String errMessage){
currentDialog=showAlertDialog_OK(getString(R.string.MESSAGE_CODE_08),
getString(R.string.MSG_COMMON_OK),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
}
//处理获取的数据
public void onDataReadyHandler(PacerURLRequest request) {
try {
essBundle bundle = request.getBundle();
if (getString(R.string.EXSERVER_SCRAP_GetShipName).equals(request.getResource())) {
ArrayList
傲游主机怎么样?傲游主机是一家成立于2010年的老牌国外VPS服务商,在澳大利亚及美国均注册公司,是由在澳洲留学的害羞哥、主机论坛知名版主组长等大佬创建,拥有多家海外直连线路机房资源,提供基于VPS主机和独立服务器租用等,其中VPS基于KVM或者XEN架构,可选机房包括中国香港、美国洛杉矶、韩国、日本、德国、荷兰等,均为CN2或者国内直连优秀线路。傲游主机提供8折优惠码:haixiuge,适用于全...
PacificRack最近促销上瘾了,活动频繁,接二连三的追加便宜VPS秒杀,PacificRack在 7月中下旬已经推出了五款秒杀VPS套餐,现在商家又新增了三款更便宜的特价套餐,年付低至7.2美元,这已经是本月第三波促销,带宽都是1Gbps。PacificRack 7月秒杀VPS整个系列都是PR-M,也就是魔方的后台管理。2G内存起步的支持Windows 7、10、Server 2003\20...
在刚才更新Vultr 新年福利文章的时候突然想到前几天有网友问到自己有在Vultr 注册账户的时候无法用支付宝付款的问题,当时有帮助他给予解决,这里正好顺带一并介绍整理出来。毕竟对于来说,虽然使用的服务器不多,但是至少是见过世面的,大大小小商家的一些特性特征还是比较清楚的。在这篇文章中,和大家分享如果我们有在Vultr新注册账户或者充值购买云服务器的时候,不支持支付宝付款的原因。毕竟我们是知道的,...
java调用webservice为你推荐
迅雷地址转换下载地址转换 怎么把别人的资源转换成迅雷地址 并且下载文件名改成自己想要的名字网络审计网络审计和传统审计的范围有什么变化维基百科中文网站科普网页最大的谁有activitygroupAndroid中如何在ActivityGroup里面监听back按钮,使得可按要求实现哪个activity可返回,哪个不需要。。电子邮件软件邮件客户端软件pmp格式PMP的格式软件开发技术文档软件开发技术的内容简介私服发布站程序怎么开一个私服发布网站?中国黑客网中国最权威的黑客网在那?anyradio手机听广播要下载什么,不在家的收听要用流量吗?
中国十大域名注册商 账号泄露 免费ddos防火墙 好看qq空间 100x100头像 共享主机 新世界服务器 申请网站 西安服务器托管 腾讯数据库 闪讯网 一句话木马 ddos攻击教程 衡天主机 主机响 usb大容量存储设备 丹弗润滑油 web服务器的配置 代理服务器是什么 台式电脑主机推荐 更多