http+post+xml

最近做一个项目不能使用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());
	@Override
	protected 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();
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值