webservice学习笔记(十三):HttpUrlConnection请求Web Service

1.大致流程:

a.前端触发事件

b.ajax传递到servlet

c.servlet获取请求值并写成请求包的形式传递给服务端

d.响应码为200的时候,读取数据并且写到浏览器上

e.jquery对报文进行解析,获取return标签中的响应值并输出

2.首先新建一个Servlet,代码如下:

package com.wayne.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.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class wayneServlet
 * 跨域,使用HttpUrlConnection发送webservice请求
 * 该servlet为客户端
 */

@WebServlet("/wayneServlet")
public class wayneServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public wayneServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

扫描二维码关注公众号,回复: 4168759 查看本文章

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    /**
     * @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("doPost");
      
 //请求报文,拼接name等参数
        String data="<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:q0='http://ws.wayne.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 url=new URL("http://localhost:8080/day_six_ws_cxf_spring_web_ajax/gotham/gotham");
      
 //原本应该是UrlConnection对象,因为遵循http协议所以要声明为HttpUrlConnection对象
        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){
          
 //读数据,xml格式的字符串
            InputStream is = connection.getInputStream();
          
 //获取读到的字节数
            System.out.println("return"+is.available());
            
//设置响应格式
            response.setContentType("text/text;charset=utf-8");
            ServletOutputStream outputStream = response.getOutputStream();
            byte[] buffer=new byte[1024];
            int len=0;
            if((len=is.read(buffer))>0){
              
 //写到浏览器
                outputStream.write(buffer, 0, len);
            }
            outputStream.flush();
        }
    }

}
 

3.在jsp页面创建按钮,并编写jquery触发事件,片段代码如下:

4.运行结果如下:

猜你喜欢

转载自blog.csdn.net/weixin_40740613/article/details/83989799