java调用webservice,比较简单方便的方法。
2016-11-01 19:12
411 查看
首先,请同学们自行了解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语言,大家也可以借鉴文末的文章里提到的其他语言。
ok,朋友们还可以把上面这段代码封装一下,方便各位的使用。
代码部分借鉴了以下两篇文章,感谢朋友们的支持与帮助。
http://vvsongsunny.iteye.com/blog/2034038
http://blog.sina.com.cn/s/blog_a00f56270102w2e2.html
个人理解,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基础写的一个简单的小游戏,没有UI界面,只是涉及到类的封装,方法的调用,方便日后复习用
- java 调用wsdl的webservice接口-简单方法
- 使用C#调用Java带MIME附件WebService方法的初步设想
- java 调用webservice的几种方法
- 在JavaScript中调用ASP.NET WebService的简单方法
- dwr例子2调用有简单参数的java方法
- java调用webService的各种方法
- java使用AXIS调用.net的webservice的小说明(webservice方法里含有对象)
- java 调用webservice的各种方法总结
- .NET调用JAVA的WebService方法
- Java调用WebService的各种方法总结(转载)
- java调用.NET的webservice实例的二种方法soap方式axis模式
- dwr2.1调用有简单参数的java方法之拆分串
- Java调用WebService(axis2)两种方法
- WebService的java简单创建和调用
- java版的webservice,完全用java的正则表达式对websercice的xml进行解析,可以很快用到web中,只需要调用其中的封装好的方法
- java调用.netwebservice的方法,返回类型为XmlDocument
- 比较简单的一个符合web标准的JS调用flash方法
- DWR中调用Java对象的方法,不要使用简单数据类型
- .net 调用java WebService简单教程