ajax不能直接访问跨域的Webservice,但是可以通过servlet去访问跨域的Webservice
页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="js/jquery-1.11.1.min.js"></script> <script type="text/javascript"> //var url = "http://192.168.13.232:8989/ws_01/umgsai"; $(function(){ $("#WebserviceJQuery2").click(function(){ var name = document.getElementById("username").value; $.post("HttpURLConnectionServlet","name="+name, function(msg){ //alert("msg"); var $Result = $(msg); var value = $Result.find("return").text(); alert($Result.text()); },"xml"); }); </script> </head> <body> name: <input id="username" name="username" value="" /> <button id="WebserviceJQuery2">Ajax请求Webservice JQuery 跨域</button> </body> </html>
HttpURLConnectionServlet.java
package com.umgsai.servlet; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class HttpURLConnectionServlet */ public class HttpURLConnectionServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public HttpURLConnectionServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); System.out.println("传过来的name:"+name); String data = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:q0='http://ws.umgsai.com/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><soapenv:Body><q0:sayHello><arg0>" + name + "</arg0></q0:sayHello></soapenv:Body></soapenv:Envelope>"; URL url = new URL("http://192.168.13.232:8989/ws_01/umgsai"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); connection.setDoInput(true); connection.setRequestProperty("Content-Type", "text/xml;charset=utf-8"); OutputStream outputStream = connection.getOutputStream(); outputStream.write(data.getBytes("utf-8")); int responseCode = connection.getResponseCode(); if (responseCode == 200) { // InputStream inputStream = connection.getInputStream(); System.out.println("返回的字节数:" + inputStream.available());// response.setContentType("text/xml;charset=utf-8"); ServletOutputStream outputStream2 = response.getOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = inputStream.read(buffer)) > 0) { outputStream2.write(buffer, 0 , len); } outputStream2.close(); inputStream.close(); } outputStream.close(); connection.disconnect(); } }
无论是通过localhost还是IP地址来访问页面都可以请求webservice得到相应的结果。