【WebService开发】其他调用webservice的方法
2016-03-19 21:55
393 查看
<p><strong>1.ajax<span style="font-family:宋体;">调用</span><span style="font-family:Calibri;">webservice</span></strong></p>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>ajax请求webservice</title> <script type="text/javascript"> window.onload = function() { document.getElementById("btn1").onclick = function() { var xmlHttp = GetXmlHttpObject(); if (xmlHttp == null) { alert("您的浏览器不支持AJAX!"); return; } xmlHttp.onreadystatechange=function(){ if (xmlHttp.readyState==4 && xmlHttp.status==200){ var dom = xmlHttp.responseXML; var returnEle = dom.getElementsByTagName("return")[0]; var nameVal = returnEle.firstChild.data; alert(nameVal); } } xmlHttp.open("POST","http://192.168.0.103:8989/day01_ws/hellows"); var name = document.getElementById("name").value; var data = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHello xmlns:ns2="http://ws.xdy.com/"><arg0>'+name+'</arg0></ns2:sayHello></soap:Body></soap:Envelope>'; xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlHttp.send(data); } function GetXmlHttpObject() { var xmlHttp = null; try { // Firefox, Opera 8.0+, Safari xmlHttp = new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; } } </script> </head> <body> 姓名:<input type="text" id="name"> <button id="btn1">ajax请求webservice</button> </body> </html>
2.jquery调用webservice
$(function(){ $.post( "http://192.168.0.103:8989/day01_ws/hellows", '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +'<soap:Body><ns2:sayHello xmlns:ns2="http://ws.xdy.com/"><arg0>xiongdy</arg0></ns2:sayHello></soap:Body></soap:Envelope>', function(msg){ alert($(msg).find("return").text()); }, "xml" ); });
3.HttpURLConnection调用WebService
上面两种请求都存在跨域的问题。如何解决ajax跨域请求webservice的问题?
在客户端应用中使用java编码去请求webservice,在页面中去请求自己的后台。本示例在servlet里请求webservice,页面提交到servlet。
Servlet代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); System.out.println("doPost "+name); String data = "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><ns2:sayHello xmlns:ns2='http://ws.xdy.com/'><arg0>"+name+"</arg0></ns2:sayHello></soap:Body></soap:Envelope>"; URL url = new URL("http://192.168.0.103:8989/day01_ws/hellows"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); connection.setDoInput(true); connection.setRequestProperty("Content-Type", "text/xml;charset=utf-8"); OutputStream os = connection.getOutputStream(); os.write(data.getBytes("utf-8")); int responseCode = connection.getResponseCode(); if(responseCode==200) { InputStream is = connection.getInputStream();//String xml System.out.println("return "+is.available()); response.setContentType("text/xml;charset=utf-8"); ServletOutputStream outputStream = response.getOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while((len=is.read(buffer))>0) { outputStream.write(buffer, 0, len); } outputStream.flush(); } }
页面代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>ajax请求webservice</title> <script type="text/javascript" src="jquery-1.4.3.js"></script> <script type="text/javascript"> $(function(){ $("#btn").click(function(){ var name = document.getElementById("name").value; $.post( "HttpURLConnectionServlet", "name="+name, function(msg) { var $Result = $(msg); var value = $Result.find("return").text(); alert(value); }, "xml" ); }); }); </script> </head> <body> 用户名: <input id="name" name="username" value="" /> <br> <button id="btn">HttpURLConnection请求webservice</button> </body> </html>
相关文章推荐
- Redis源码解析:11RDB持久化
- zjnu 1744 EKSPLOZIJA(模拟栈)
- mybatis主键返回
- Flexpaper播放swf的问题
- 并查集
- 机器学习:线性判别分析LDA
- IndentationError: unindent does not match any outer indentation level
- 你认为扁平化模式好还是树形结构好?
- 7-8-无向图的关节点-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
- hdu1231 最大连续子序列--DP
- Java单例你所不知道的事,与Volatile关键字有染
- Qt:关于Qt5.6安装包无法运行的解决方法
- 随机数
- 计算某一个字符串中的大小写与其它字符
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) A. Bear and Three Balls 水题
- 别傻了,人家离职你也离
- 公告 我的另外一个博客
- 搬圆桌问题
- const, static, const static
- jquery扩展方法