加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

webservice soap脱离客户端代码单独http调试

发布时间:2020-12-16 22:51:21 所属栏目:安全 来源:网络整理
导读:? ? webservice soap的实现序列化方式默认也是最通用的是采用xml进行序列化以及http协议进行传输的,也就是文本协议传输调用,这样给了我们脱离客户端代码用工具进行调试或者用HttpClient的代码进行各种测试的方便。 ? ? 目前需要对webservice soap的server

? ? webservice soap的实现序列化方式默认也是最通用的是采用xml进行序列化以及http协议进行传输的,也就是文本协议传输调用,这样给了我们脱离客户端代码用工具进行调试或者用HttpClient的代码进行各种测试的方便。

? ? 目前需要对webservice soap的server端进行压力测试,然而,每次java这边测试的时候都要启动cxf进行对象的序列化和调用,非常损耗客户端机器的性能,不利于对服务端的压力测试,因此我对其传输的body单独提取出来,采用httpclient进行发送请求。

? ? 此次我们需要借助fiddler这个http调试的神器,关于fiddler的使用,这里就不阐述了,只是对本次使用的过程描述一下。

? ? 由于java的http调用好像绕过了fiddler的监听,所以要用fiddler进行java 的http请求的拦截,只能够采用代理的方式,在fiddle开启代理服务器模式。然后在java的应用程序中加入以下的jvm启动参数:

-DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888
? ?此时,java进程中所有的http请求都会以fiddle作为代理,然后才进行下一步的请求,所以自然可以被fiddle拦截到了。

? ?接下来,我们用java的cxf client进行webservice的调用,会在fiddle中看到请求已经被拦截。

? ? 记录下对应的url以及body体,接下来就可以直接用工具进行对应的http请求了。


? ? 除了用http请求工具直接请求之外,还可以结合之前的压力测试的代码,进行对应的接口的压力测试,而不需要依赖于cxf的序列化和反序列化。

? ? 分享下采用httpclient如何直接发送webservice请求:

? ??

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.IOException;

/**
 * Created with IntelliJ IDEA.
 * User: lsz
 * Date: 2015/5/13 0013
 * Time: 上午 9:47
 * request body
 */
public class HttpRequest {
	public static String requestBody(String url,String body) throws IOException {
		HttpClient client = HttpClients.createDefault();
		HttpPost post = new HttpPost(url);
		StringEntity entity = new StringEntity(body);
		post.setEntity(entity);
		HttpResponse response = client.execute(post);
		return EntityUtils.toString(response.getEntity());
	}

	public static void main(String[] args) throws IOException {
		String url ="http://192.168.5.18:8723/helloService";
		String body = "<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:getBean xmlns:ns2="http://api.service.youboy.com/"/></soap:Body></soap:Envelope>";
		System.out.println(requestBody(url,body));
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读