http+post+xml

来源:互联网 发布:程序员的浪漫源码下载 编辑:程序博客网 时间:2024/06/01 09:16
最近做一个项目不能使用webservice,必须使用http+post+xml的方式。具体流程是A项目嗲用B项目的接口,参数和返回值的传送接收。以下代码测试可用。

1.请求端代码

package action;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.HttpURLConnection;import java.net.URL;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ClientAction extends HttpServlet{    @Override    protected void service(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {        //req.setCharacterEncoding("utf-8");                StringBuffer reqXml = new StringBuffer();/*        reqXml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");        reqXml.append("<request>");        reqXml.append("    <meta>");        reqXml.append("    <channeltype>001</channeltype> ");        reqXml.append("    <reqserialno>02340385038080</reqserialno>");        reqXml.append("    <trancode>DX001</trancode>");        reqXml.append("    <sourceid>10</sourceid>");        reqXml.append("</meta>");        reqXml.append("<data>");        reqXml.append("    <channeltype>001</channeltype>");        reqXml.append("    <username>gjjxc</username>   ");        reqXml.append("<password>gjjxc</password>  ");        reqXml.append("    <phone>18662536750</phone>");        reqXml.append("<content>测试</content>");        reqXml.append("</data>");        reqXml.append("</request>");*/                InputStream input = this.getClass().getClassLoader().getResourceAsStream("message.txt");        BufferedReader reqReader = new BufferedReader(new InputStreamReader(input,"utf-8"));        String line2 = null;        while((line2 = reqReader.readLine()) != null){            reqXml.append(line2);         }        reqReader.close();        URL url = new URL("http://localhost:8080/SMSPLANT/testServlet");                HttpURLConnection uc = (HttpURLConnection)url.openConnection();        uc.setConnectTimeout(10000);        uc.setReadTimeout(120000);        uc.setRequestMethod("POST");//      uc.setRequestProperty("Pragma:", "no-cache");//      uc.setRequestProperty("Cache-Control", "no-cache");//      uc.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");        uc.setDoOutput(true);        OutputStreamWriter out = new OutputStreamWriter(uc.getOutputStream(),"utf-8");        System.out.println("客户端发送xml:"+reqXml.toString());        out.write(reqXml.toString());                out.flush();        out.close();                int state = uc.getResponseCode();        if(state == 200){            //获取返回数据            BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream(),"utf-8"));            String line = null;            StringBuffer con = new StringBuffer();            while((line = in.readLine()) != null){                //line为返回值,这就可以判断是否成功、                con.append(line);             }            System.out.println("客户端接收xml:"+con.toString());            in.close();            resp.sendRedirect("http://www.baidu.com");        }    }}


2.服务端代码

package com.szwx.servlet;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Writer;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;import com.szwx.webservice.CustomerSmsService;import com.szwx.webservice.impl.CustomerSmsServiceImpl;/** * @author fanzhigang * */public class testAction extends HttpServlet {private CustomerSmsService customerSmsService;//private Logger log = Logger.getLogger(this.getClass());@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {InputStream in = req.getInputStream();BufferedReader read = new BufferedReader(new InputStreamReader(in,"utf-8"));StringBuffer reqXml = new StringBuffer();String line = null;while((line = read.readLine()) != null){reqXml.append(line);}read.close();in.close();System.out.println("服务端接收xml:"+reqXml.toString());customerSmsService = new CustomerSmsServiceImpl();String res = customerSmsService.sendGjjxc(reqXml.toString());//返回resp.setContentType("text/xml;charset=utf-8");Writer out = resp.getWriter();System.out.println("服务端返回xml:"+res);out.write(res);out.flush();out.close();}}


原创粉丝点击