模拟请求webservice并获取返回报文

     有时需要模拟请求webservice服务,并处理返回的报文,根据报文的信息进行业务处理。

     样例代码如下: 

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

/**
 * Simulating request webservice
 * 模拟请求WEBSERVICE样例
 *
 */
public class SimRequestWS {

	/**
	 * 模拟请求WEBSERVICE方法
	 * @param url	请求的Webservice地址
	 * @param request	请求的报文,XML格式的字符串
	 * @return
	 */
	public static Map<String,String> doRequestWS(URL url, String request) {
		HttpURLConnection connection = null;
		String rspMsg = "";
		String rspCode = "ERROR";
		try {
			byte[] requestBuf = (byte[]) null;
			requestBuf = request.getBytes("gbk");

			connection = (HttpURLConnection) url.openConnection();
			connection.setDoOutput(true);
			connection.setDoInput(true);
			connection.setRequestMethod("POST");
			connection.setUseCaches(false);
			connection.setRequestProperty("Content-Type", "text/plain");
			connection.connect();

			DataOutputStream out = new DataOutputStream(
					connection.getOutputStream());
			out.write(requestBuf);
			out.flush();
			out.close();

			if (connection.getResponseCode() != 200) {
				System.out.println("ERROR: " + connection.getResponseMessage());
			}

			InputStream in = connection.getInputStream();
			ByteArrayOutputStream bufOut = new ByteArrayOutputStream();
			byte[] readBuf = new byte[100];
			while (true) {
				int ret = in.read(readBuf);
				if (ret < 0)
					break;
				bufOut.write(readBuf, 0, ret);
			}
			byte[] rspBuf = bufOut.toByteArray();

			rspMsg = new String(rspBuf, "gbk");
			rspCode = connection.getResponseMessage();
		} catch (Exception e) {
			e.printStackTrace();
		}

		connection = null;
		Map<String,String> map = new HashMap<String,String>();
		map.put("rspCode", rspCode);
		map.put("rspMsg", rspMsg);
		return map;
	}

	public static void main(String[] args) throws Exception,
			UnsupportedEncodingException {
		URL url = new URL("http://172.168.27.154:8081/cxfdemo?wsdl");

		Map<String,String> map =SimRequestWS.doRequestWS(
						url,
						"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ws=\"http://ws.com/\">"
								+ "<soapenv:Header/>"
								+ "<soapenv:Body>"
								+ "<catt:hello>"
								+ "<arg0>李四</arg0>"
								+ "</catt:hello>"
								+ "</soapenv:Body>"
								+ "</soapenv:Envelope>");
		System.out.println(map);
	}
}

 模拟请求一个Webservice服务,返回信息如下:

{rspCode=OK, rspMsg=<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:helloResponse xmlns:ns2="http://catt.com/"><return>hello 李四</return></ns2:helloResponse></soap:Body></soap:Envelope>}
时间: 2024-12-03 06:03:04

模拟请求webservice并获取返回报文的相关文章

服务器-c 模拟http请求,如何获取页面中的图片?

问题描述 c 模拟http请求,如何获取页面中的图片? 1.我编写了一个SOCKET程序,功能类似代理软件,主要是将指定服务器的页面转发到本地. 2.在浏览器访问本地地址时,就会打开指定服务器的页面 3.现在的问题是可以获取到文本数据,如: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />? <html> <head> </head&g

java发送url请求获取返回值的二种方法_java

下面提供二种方法会使用java发送url请求,并获取服务器返回的值 第一种方法: 复制代码 代码如下: import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFor

web前端-怎么用js来获取网页元素,请求响应事件和返回数据大小

问题描述 怎么用js来获取网页元素,请求响应事件和返回数据大小 如图那样..不要使用后台,直接用jq来抓取,可不可行??领导说不能用后台语言来实现..本来用C#做好了的,现在又要重新做过 解决方案 js不是有函数什么的,利用js语法应该可以的

Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据_jquery

一.WebService.asmx 处理业务数据,在GetWhether方法中产生天气情况数据,供JqueryRequest.aspx调用,代码如下: 复制代码 代码如下: [System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService { public WebService () { //如果使用设计的组件,请取消注释以下行 //InitializeCompo

线程-android 访问webservice获取返回结果

问题描述 android 访问webservice获取返回结果 // 访问webservice WebServiceUtils.callWebService(WebServiceUtils.LOCAL_SERVER_URL, "uploadAttendance", pro, new WebServiceCallBack() { @Override public void callBack(SoapObject result) { ProgressDialogUtils.dismissP

C#HttpWebRequest 模拟请求一个URL和在网站上直接输入这个URL返回的页面不一样

问题描述 C#HttpWebRequest 模拟请求一个URL和在网站上直接输入这个URL返回的页面不一样 以上都是同一个URL请求返回的页面.为什么会出现这种情况,实在没有C币了求好心人帮助. myRequest = (HttpWebRequest)WebRequest.Create(requestUrlString); myRequest.Method = ""GET""; myRequest.UserAgent = ""Mozilla/5.

C#模拟post和get请求,无法获取完整的cookie,求大神出来

问题描述 用c#程序模拟请求怎么都不成功,用fildder工具模拟可以成功,后来找到原因是cookie的问题,但是我怎么也获取不到完整的cookie,求大神指点迷津我用程序只能获取到Cookie:JSESSIONID=phWrXFWPMDZnFGLhVL7cW75j8mcbJvl5QJGSwhZ4GNhn2fjS51rl!-2015233359;但是完整的是Cookie:_gscu_1069674962=64177665o5ekay35;_gscu_98558434=641776696tq0q1

c# 调用 webservice,怎么获取返回的结果,结果类型是DataSet[]的

问题描述 c#调用webservice,怎么获取返回的结果,结果类型是DataSet[]的,调用接口http://218.213.212.29/PaymentSvc/PayWebService.asmx?wsdl 解决方案 本帖最后由 cw0411025 于 2014-01-20 17:13:39 编辑解决方案二:你调用有错吧?解决方案三:返回的是xml格式,你用读xml的方法试试.解决方案四:返回的是带有命名空间的XML阿,XmlDocumentxml=newXmlDocument();xml

server-java使用post请求webservice

问题描述 java使用post请求webservice 我使用下面的方式请求 public static String postData1(String urlAddress, String encodedType, Map params) { try { URL url = new URL(urlAddress); URLConnection conn = url.openConnection(); // 打开联接 // 使用POST请求,是否向connection输出/输入,因为这个是pos