eclipse生成的webservice客户端调用webservice接口返回值慢的问题
2016-11-04 14:20
543 查看
最近在对接一个webservice接口的时候,为了方便直接用eclipse生成了webservice的客户端,发现一个奇怪的问题,调用webservice的时候调用速度很快,但是返回数据很慢,每次需要5分钟左右才能接收到服务端返回的值。奇葩就奇葩在隔了五分钟才返回一个值。最后找了好久原因,发现情况eclipse生成的客户端发送的是基于HTTP 1.0的请求,如下图:
找了资料发现HTTP1.0和HTTP 1.1的区别:HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。具体的见另一篇博客:http://blog.csdn.net/u012470138/article/details/53034301
然后在客户端加上声明,声明是HTTP1.1,只要加上一行代码:
_call.setPropert(org.apache.axis.MessageContext.HTTP_TRANSPORT_VERSION,
HTTPConstants.HEADER_PROTOCOL_V11);瞬间解决了这个问题,调用和获得返回值十分的快。如下是服务端截取的请求协议:
完整代码如下:
public java.lang.String getBlackPhone(java.lang.String account, java.lang.String password, java.lang.String phone) throws java.rmi.RemoteException {
if (super.cachedEndpoint == null) {
throw new org.apache.axis.NoEndPointException();
}
org.apache.axis.client.Call _call = createCall();
//其实将下面那行代码放在createCall()这个方法里面更通用
_call.setProperty(org.apache.axis.MessageContext.HTTP_TRANSPORT_VERSION, HTTPConstants.HEADER_PROTOCOL_V11);
_call.setOperation(_operations[0]);
_call.setUseSOAPAction(true);
_call.setSOAPActionURI("http://www.139.net/GetBlackPhone");
_call.setEncodingStyle(null);
_call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);
_call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
_call.setOperationName(new javax.xml.namespace.QName("http://www.139.net", "GetBlackPhone"));
setRequestHeaders(_call);
找了资料发现HTTP1.0和HTTP 1.1的区别:HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。具体的见另一篇博客:http://blog.csdn.net/u012470138/article/details/53034301
然后在客户端加上声明,声明是HTTP1.1,只要加上一行代码:
_call.setPropert(org.apache.axis.MessageContext.HTTP_TRANSPORT_VERSION,
HTTPConstants.HEADER_PROTOCOL_V11);瞬间解决了这个问题,调用和获得返回值十分的快。如下是服务端截取的请求协议:
完整代码如下:
public java.lang.String getBlackPhone(java.lang.String account, java.lang.String password, java.lang.String phone) throws java.rmi.RemoteException {
if (super.cachedEndpoint == null) {
throw new org.apache.axis.NoEndPointException();
}
org.apache.axis.client.Call _call = createCall();
//其实将下面那行代码放在createCall()这个方法里面更通用
_call.setProperty(org.apache.axis.MessageContext.HTTP_TRANSPORT_VERSION, HTTPConstants.HEADER_PROTOCOL_V11);
_call.setOperation(_operations[0]);
_call.setUseSOAPAction(true);
_call.setSOAPActionURI("http://www.139.net/GetBlackPhone");
_call.setEncodingStyle(null);
_call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);
_call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
_call.setOperationName(new javax.xml.namespace.QName("http://www.139.net", "GetBlackPhone"));
setRequestHeaders(_call);
相关文章推荐
- 用axis在eclipse中new出webService client生成客户端,调用远程webservice接口的方法
- [Webservice] Eclipse根据wsdl文件自动生成webservice的调用客户端
- 客户端axis调用cxf服务端webservice接口问题
- [Webservice] Eclipse根据wsdl文件自动生成webservice的调用客户端
- 【Webservice】 Eclipse根据wsdl文件自动生成webservice的调用客户端
- gsoap生成webservice调用客户端接口
- gsoap生成webservice调用客户端接口
- 生成webservice接口以及通过客户端调用接口。
- gsoap生成webservice调用客户端接口
- gsoap生成webservice调用客户端接口
- webservice接口常见问题1:客户端使用SOAP方式调用CXF服务时异常
- Java 调用C# webservice接口 生成java客户端 实现方式
- Eclipse插件生成webservice客户端调用代码
- 提供了webservice的wsdl地址,如何生成消费端(客户端),怎么调用已经提供的wsdl接口
- [Webservice] Eclipse根据wsdl文件自动生成webservice的调用客户端
- 用jdk生成webservice客户端代码(调用免费接口)
- [Webservice] Eclipse根据wsdl文件自动生成webservice的调用客户端
- eclipse根据.wsdl文件自动生成webservice的调用客户端
- eclipse使用axis生成webservice客户端并且编写客户端调用代码
- webservice 生成客户端接口调用