首先,请同学们自行了解webservice的基础知识。

  个人理解,webservice约等于使用http+xml技术进行跨平台的数据交互。

  http和xml我们都很熟悉了,把他们两个组合到一起就是webservice了,http负责信息传输,xml负责信息的组织。这么理解虽然说简单了一点,但如果你只需要调用webservice服务,而不需要去创建并维护话,这样理解也就够了。

  1.用xml组织信息

  好了,那么我们就先从xml说起,我们需要把一些请求的信息发送给webservice服务器,而服务器又需要把响应的消息反馈给我们。因为xml的跨平台特性,在webservice里使用了xml作为信息的组织形式。也就是说客户端与服务器之间说话的方式,是互相传递xml文件。

  

  2.用http发送信息

  那么发送xml文件的任务就交给http来做了,我们把http请求中HttpURLConnection的Content-Type设置成text/xml;charset=UTF-8,那么我们的http就可以传送xml文件了。

  3.发送的xml长啥样?

  很好,那我们就发送一个xml给服务器就好,然后服务器把要说的话也放到一个xml里返回给我们。可是,可是,我们怎么知道要对服务器说什么?服务器可以提供哪些服务?这些服务又需要提供哪些参数?这些我们统统不知道啊。

  对了,我们的wsdl登场了,wsdl相当于一个咨询台,它可以告诉你,服务器都提供了哪些服务,哪个服务要提供哪些参数。我们怎么找到wsdl呢?原来webservice服务都会把wsdl发布到网上,有需要的朋友们就可以自取啦。

  感谢网友们的力量,这是一些开放的webservice,大家可以进去看一下。

  https://my.oschina.net/CraneHe/blog/183471

  像这样,服务器会提供一个wsdl的链接给你,你可以尝试在浏览器里打开这个链接(比如http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl),那就可以看到以下这些信息了:



  这里面的信息好复杂,看不懂啊。。。要学习wsdl又很费时间,所以博主就从网上找了个工具,自动把这个wsdl咨询台里咨询员的方言翻译成了普通话~博主用的这个叫做storm的软件(http://www.cr173.com/soft/12037.html),当然类似的工具有很多(比如这些:http://www.codeceo.com/article/12-great-webservice-test-tool.html)。storm里我们点击新增,输入了wsdl以后,wsdl的内容就被翻译过来了:



  这个服务就是你输入一个qq号,它就告诉你这个qq号的在线状态,所以需要你提供一个qq号作为参数。上图中,树形结构里展示了需要我们填写的参数qqCode。点击raw view按钮,就看到完整的xml内容了,下图中,左边是发送的请求xml内容,右边是服务器返回的xml内容。



  (原来xml的复杂格式都是套路)

  4.开始编码啦

  好的,准备工作完成!现在我们总结一下,我们要用http发送一个xml到服务器上去,然后把服务器返回的xml内容拿来用。发送给服务器的xml的内容,就用我们软件从wsdl解析出来的样式。那么,我们开始愉快的编码吧,这里我用的java语言,大家也可以借鉴文末的文章里提到的其他语言。

    try {
String urlStr = "http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx";
URL url = new URL(urlStr);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
OutputStream oStream = con.getOutputStream();
//下面这行代码是用字符串拼出要发送的xml,xml的内容是从测试软件里拷贝出来的
//需要注意的是,有些空格不要弄丢哦,要不然会报500错误的。
//参数什么的,你可以封装一下方法,自动生成对应的xml脚本
String soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"+
"<soap:Envelope "+
"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" "+ "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "+ "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"+
"<soap:Body>"+
"<qqCheckOnline xmlns=\"http://WebXml.com.cn/\">"+
"<qqCode>12345678</qqCode>"+ //你的qq号填到里边
"</qqCheckOnline> "+
"</soap:Body>"+
"</soap:Envelope>";
oStream.write(soap.getBytes());
oStream.close(); InputStream iStream = con.getInputStream();
Reader reader = new InputStreamReader(iStream); int tempChar;
String str = new String();
while((tempChar = reader.read()) != -1){
str += (char) tempChar;
}
//下面这行输出返回的xml到控制台,相关的解析操作大家自己动手喽。
//如果想要简单的话,也可以用正则表达式取结果出来。
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>returnedxmlstr:"+str);
iStream.close();
oStream.close();
con.disconnect();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

  ok,朋友们还可以把上面这段代码封装一下,方便各位的使用。

  代码部分借鉴了以下两篇文章,感谢朋友们的支持与帮助。

  http://vvsongsunny.iteye.com/blog/2034038

  http://blog.sina.com.cn/s/blog_a00f56270102w2e2.html

java调用webservice,比较简单方便的方法。的更多相关文章

  1. Java调用webservice接口方法

                             java调用webservice接口   webservice的 发布一般都是使用WSDL(web service descriptive langu ...

  2. java 调用webservice的各种方法总结

    java 调用webservice的各种方法总结 几种流行的开源WebService框架Axis1,Axis2,Xfire,CXF,JWS比较 方法一:创建基于JAX-WS的webservice(包括 ...

  3. Java调用WebService方法总结(9,end)--Http方式调用WebService

    Http方式调用WebService,直接发送soap消息到服务端,然后自己解析服务端返回的结果,这种方式比较简单粗暴,也很好用:soap消息可以通过SoapUI来生成,也很方便.文中所使用到的软件版 ...

  4. Java调用WebService方法总结(8)--soap.jar调用WebService

    Apache的soap.jar是一种历史很久远的WebService技术,大概是2001年左右的技术,所需soap.jar可以在http://archive.apache.org/dist/ws/so ...

  5. Java调用WebService方法总结(6)--XFire调用WebService

    XFire是codeHaus组织提供的一个WebService开源框架,目前已被Apache的CXF所取代,已很少有人用了,这里简单记录下其调用WebService使用方法.官网现已不提供下载,可以到 ...

  6. 原生java调用webservice的方法,不用生成客户端代码

    原生java调用webservice的方法,不用生成客户端代码 2015年10月29日 16:46:59 阅读数:1455 <span style="font-family: Aria ...

  7. Java调用WebService方法总结(7)--CXF调用WebService

    CXF = Celtix + XFire,继承了Celtix和XFire两大开源项目的精华,是一个开源的,全功能的,容易使用的WebService框架.文中所使用到的软件版本:Java 1.8.0_1 ...

  8. Java调用WebService方法总结(5)--Axis2调用WebService

    Axis2是新一点Axis,基于新的体系结构进行了全新编写,有更强的灵活性并可扩展到新的体系结构.文中demo所使用到的软件版本:Java 1.8.0_191.Axis2 1.7.9. 1.准备 参考 ...

  9. Java调用WebService方法总结(4)--Axis调用WebService

    Axis是比较常用的WebService框架,该项目在2006实现了最终版,后面就没有更新了.文中demo所使用到的软件版本:Java 1.8.0_191.Axis 1.4. 1.准备 参考Java调 ...

  10. Java调用WebService方法总结(3)--wsimport调用WebService

    wsimport是JDK自带的把WSDL转成Java的工具,可以很方便的生成调用WebService的代码.文中所使用到的软件版本:Java 1.8.0_191. 1.准备 参考Java调用WebSe ...

随机推荐

  1. C++等号操作符重载

    在新学操作符重载时最令人头疼的可能就是一些堆溢出的问题了,不过呢,只要一步步的写好new 与 delete.绝对不会有类似的问题. 当时我们编译可以通过,但是运行会出错,因为对象s1与s2进行赋值时, ...

  2. js中几种继承实现

    继承实现的几种方式 1.借助call实现继承 function p1() { this.name = 'p1' this.say = function () { console.log(this.na ...

  3. [考试反思]1031csp-s模拟测试96:常态

    按照smily的说法这一场的大众分暴力分是不是265啊QwQ那我可真是个大垃圾 总算还是回归了常态. T3文件名写错,把“city.in”写成“city,in” 还好,只丢了20分. T2乱打$O(n ...

  4. [考试反思]0821NOIP模拟测试28:沉默

    这次不能把我前面的分数段都列出来了,因为实在太多了. 这次也不能把我后面的分数段列出来了,因为我后面没有了. yxm,mikufun,Pairs170100分第10.50分第29. 我:爆零,倒数第一 ...

  5. 大数据之路week01--自学之面向对象java(static,this指针(初稿))

    函数的重载 返回值不一样会报错 java中,如果自己定义了构造函数的话,它就不会给你默认一个无参函数 如果一个属性,只进行定义,不初始化,自动补0,如果是一个布尔属性,默认是false但是如果一个局部 ...

  6. 因为 GitHub Actions 我发现了 Jake Wharton 的一个仓库

    本文微信公众号「AndroidTraveler」首发. 背景 昨天(2019-11-14)上去 GitHub 上面一看,结果来了个下面的提示: 点进去一看: 看来是自动化构建相关的. 那就试一下,选了 ...

  7. winds添加静态路由

    如上图所示,wan口设备箱访问路由器栏口设备 route -p add 192.168.21.0 mask 255.255.255.0  192.168.0.176 -p 表示永久路由,重启后不丢失 ...

  8. docker监控容器

    Weave Scope: 是能够自动生成一张 Docker 容器web动态图的监控软件,能够让我们直观地理解.监控和控制容器. 监控一台主机: 第一步:安装 [root@localhost ~]# c ...

  9. 过滤广告(只能发布 [a-zA-z0-9及汉字,;?.]) ,排除其他特殊符号

      /** * 过滤广告(只能发布 [a-zA-z0-9及汉字,;?.]) ,排除其他特殊符号 * Created by 1 on 2015/8/19. */ public class FilterA ...

  10. Zabbix-(四)邮件、钉钉告警通知

    Zabbix-(四)邮件.钉钉告警通知 一.前言 在之前的文章里,通过Zabbix对主机的磁盘.CPU以及内存进行了监控,并在首页Dashboard里创建了监控图形,但是只有当我们登录到Zabbix后 ...