java调用webservice

摘自其它:webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。今天搜索到了非常好的 webservice provider列表

http://www.webservicex.net/WCF/default.aspx

这上面列出了70多个包括很多方面的free webservice provider,utilities->global weather就可以获取全球的天气预报。

直接粘贴代码:

方法一:直接AXIS调用远程的web service

public void doSelectRiskReportForm(HttpServletrequest request,

HttpServletresponse response){

//调用接口

//方法一:直接AXIS调用远程的web service

try {

String endpoint = "http://localhost:8080/platform-jxcx-service/services/settlementServiceImpl?wsdl";

Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress(endpoint);

String parametersName = "settle_num"; // 参数名//对应的是 public String printword(@WebParam(name = "settle_num") String settle_num);

// call.setOperationName("printWord"); // 调用的方法名//当这种调用不到的时候,可以使用下面的,加入命名空间名

call.setOperationName(new QName("http://jjxg_settlement.platform.bocins.com/", "printWord"));// 调用的方法名

call.addParameter(parametersName, XMLType.XSD_STRING, ParameterMode.IN);//参数名//XSD_STRING:String类型//.IN入参

call.setReturnType(XMLType.XSD_STRING); // 返回值类型:String

String message = "123456789";

String result = (String) call.invoke(new Object[] { message });// 远程调用

System.out.println("result is " + result);

} catch (Exception e) {

System.err.println(e.toString());

}

}

方法二:直接SOAP调用远程的webservice

这个方法我没有试验,需要下载jar,SOAP 使用 HTTP 传送 XML,尽管HTTP 不是有效率的通讯协议,而且 XML 还需要额外的文件解析(parse),两者使得交易的速度大大低于其它方案。但是XML 是一个开放、健全、有语义的讯息机制,而 HTTP 是一个广泛又能避免许多关于防火墙的问题,从而使SOAP得到了广泛的应用。但是如果效率对你来说很重要,那么你应该多考虑其它的方式,而不要用 SOAP。

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();

}

}

}

方法三:直接使用Eclipse生成客户端.idea类同

以天气预报的为例:

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

在页面上直接Ctrl+s保存文件,把xml改成wsdl就行

然后复制到项目里.

webservice服务是需要引入axis的jar包的,如下图:

如果没有引入saaj-*.jar,可能会报错。

右键点击WeatherWebService.wsdl文件,找到Web Service项,点击Generate Client子菜单。如下图:

在弹出的窗口中点击Next,如下图:

选择生成的代码要防止的包位置,如下图:

点击完成,稍等片刻,就能看到生成的java代码了。如下图:

生成客户端后,只需要在使用的时候,引入这个接口即可,就好像使用本地类一样.

补充:在使用方式一时遇到几个问题

1.Message part settlementService was not recognized.

解决方式:消息部分未被识别。

其实就是就是方法名错了,如果只输入方法名不行,就加入命名空间

// call.setOperationName("printWord");          // 调用的方法名//当这种调用不到的时候,可以使用下面的,加入命名空间名

call.setOperationName(new QName("http://jjxg_settlement.platform.bocins.com/", "printWord"));// 调用的方法名

2.unexpected wrapper element printWord found.   Expected {http://jjxg_settlement.platform.bocins.com/}printWord.

解决方式:

Call call = (Call) service.createCall();

call.setOperationName(new QName("命名空间地址", "方法名"));

3.Unmarshalling Error: 意外的元素 (uri:"http://jjxg_settlement.platform.bocins.com/", local:"settle_num")。所需元素为

解决方式:

call.addParameter(parametersName, XMLType.XSD_STRING, ParameterMode.IN);//参数名//XSD_STRING:String类型//.IN入参

// 参数名//对应的是 public String printWord(@WebParam(name = "settle_num") String settle_num);

实际走过的弯路:

命名空间的名称,缺少了"/"

call.setOperationName(new QName("http://jjxg_settlement.platform.bocins.com/", "printWord"));// 调用的方法名

相关阅读

在处理中,需要每隔一段时间看一下文件的大小。使用filesize后,最初取得的大小是正确的,后来就变的不正确了。一直是一个固定的值。调

系统要求

Windows与.NET框架

由于WebKit库和.NET框架的要求,WebKit .NET只能在Windows系统上运行。从版本0.4开始,最低要求包

我遇到这个问题的场景是:页面一个大的SurfaceView .想要通过相机实时预览捕获到的场景。页面进入的时候动态获取相机权限,如果有权

/**

* @功能 爬取指定bilibili视频弹幕

* @作者 家

* @感谢 内个谁, ProjectXero

* @难点 不会解压gzip和deflate,再次感谢上

layoutSubviews在什么情况下调用

字数617 阅读421 评论1 喜欢51.在以下情况都会调用

1.直接调用[self setNeedsLayout];(这个在

java soap服务_「java调用webservice」java调用webservice接口 三种方法 - seo实验室相关推荐

  1. java arrayadapter_「arrayadapter」Android之ArrayAdapter(数组适配器)的三种方法 - seo实验室...

    arrayadapter arrayadapter数组适配器用于绑定格式单一的数据,数据源可以是集合或者数组 列表视图(listview)以垂直的形式列出需要显示的列表项. 实现过程:新建适配器-&g ...

  2. java节假日算法_「国家法定节假日」java 国家法定节假日和双休日判断工具类 - seo实验室...

    国家法定节假日 package com.newland.dateutil; import java.text.ParseException; import java.text.simpledatefo ...

  3. ubuntu 安装java jdk_「ubuntu安装jdk」Ubuntu安装jdk8的两种方式 - seo实验室

    ubuntu安装jdk 安装方式: 1):通过ppa(源) 方式安装. 2):通过官网安装包安装.JDK官网下载地址 一:使用ppa(源)方式安装: 1):添加ppa源sudo add-apt-rep ...

  4. python画太极八卦图_「太极八卦图」使用HTML+CSS画太极八卦图 - seo实验室

    太极八卦图 使用HTML+CSS画太极八卦图 基本语法 CSS基本语法格式:选择符{属性1:属性值1;属性2:属性值2;属性3:属性值3;......} 选择符:1.元素选择器:找到同名一系列 2.类 ...

  5. mysql的索引缺点_「缺点有哪些」数据库索引是什么 有什么优缺点 - seo实验室

    缺点有哪些 数据库索引是什么 数据库索引是:数据库索引就像是一本书的目录一样,使用它可以让你在数据库里搜索查询的速度大大提升.而我们使用索引的目的就是,加快表中的查找和排序.索引的几种类型分别是普通索 ...

  6. python recv_python网络编程调用recv函数完整接收数据的三种方法

    最近在使用python进行网络编程开发一个通用的tcpclient测试小工具.在使用socket进行网络编程中,如何判定对端发送一条报文是否接收完成,是进行socket网络开发必须要考虑的一个问题.这 ...

  7. java query接口_「软帝学院」Java零基础学习详解

    软帝学院笔记Day26 01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类 * a: 概述 * DBUtils是java编程中的数据库操作实用工具,小巧简单实 ...

  8. 多线程怎么保证数据安全_「软帝学院」Java挑战者专栏:多线程详解2

    软帝学院笔记Day21 多线程(单例设计模式)(掌握) 单例设计模式:保证类在内存中只有一个对象. 如何保证类在内存中只有一个对象呢? (1)控制类的创建,不让其他类来创建本类的对象.private ...

  9. iphone新旧手机数据传输已取消_如何取消iPhone手机App自动扣费?三种方法让你不再被“偷”...

    一直以来苹果手机App这个自动续费真是让大家不胜其烦,钱虽然不多可总是平白无故这里十块,那里二十块的被扣也是不小的浪费,日常生活中为了追追剧.听听音乐.玩玩游戏难免会开通一些App会员而选择自动续费的 ...

  10. c++文件流读取一行_「软帝学院」Java挑战者专栏:IO流详解2

    软帝学院笔记Day18 IO流(字符流FileReader) 1.字符流是什么 字符流是可以直接读写字符的IO流 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符 ...

最新文章

  1. 100题_10 在排序数组中查找和为给定值的两个数字
  2. 前线观察 | AWS re:Invent 2018见闻实录
  3. 8086CPU跳转指令
  4. DotLiquid模板引擎简介
  5. cell数组变为字符串_cell转字符串
  6. python 编译成exe黑屏_python''外星人入侵''打包成exe遇到的问题和解决办法,闪退,黑屏。...
  7. 【深入理解JVM】JVM的五大运行时数据区域
  8. 对比原生Node封装的Express路由 和 express框架路由
  9. Java基础笔记(三)
  10. python编程手机_手机最强Python编程神器,在手机上运行Python
  11. 爱客影院自动采集源码v3.5.5
  12. 节约里程法java代码,智慧职教: 在配送路线优化的节约里程法中有几个基本的假设前提条件,他们是()。...
  13. 我的孤独自学之路----kali 安装及更新源
  14. 《你可能不知道免像控的两个细节问题》
  15. centos linux引导修复_Linux 引导修复
  16. js 调用TSC打印机
  17. 位运算—统计文本文件中汉字的个数
  18. paddlepaddle测试安装_专栏 | 新手入门?一步一步教你如何安装PaddlePaddle
  19. mysql没有my.ini但是有 my-default.ini原因以及解决办法
  20. 软件测试自学摄影审美,【摄影讲评】摄影常用的5种透视 第1234讲?

热门文章

  1. 已解决谷歌浏览器打不开axure原型
  2. 电脑拖机,win10一台电脑两人用
  3. mysql 笛卡尔积
  4. matlab中 点到线的距离,点到空间直线的距离 | 学步园
  5. 在统计模式识分类问题中,当先验概率未知时,可以使用
  6. 计算机控制实验室装置,自控/计控原理实验箱 实验仪 实验装置 教学实训设备...
  7. 面试题大全2-技能提升-项目部分-运维
  8. 饿了么ui 省市区 三级联动框架
  9. PLSQL 使用技巧(快捷键/关键字等)
  10. RN上使用react-native-video视频播放器插件