http+post+xml

來源:互聯網
上載者:User

最近做一個項目不能使用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();}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.