使用XFire调用WebService需注意的事项
来源:互联网 发布:程序员也就是编码员吗 编辑:程序博客网 时间:2024/05/22 10:07
使用XFire调用WebService需注意的事项
(一):注意过滤输入和输出参数空白字符
如果出现空白字符解析不了导致调用失败,导致下面的异常:
org.codehaus.xfire.fault.XFireFault: Error writing document.. Nested exception is com.ctc.wstx.exc.WstxIOException: Invalid null character in text to output
at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:83)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.Client.invoke(Client.java:368)
String.trim()一下即可。
(二):连接时注意修改一些参数
比如:HttpClientParams.CONNECTION_MANAGER_TIMEOUT // 设置Timeout
这其实不止是这里需要,任何网络编程都需要注意此事项。当对方服务死了或网络异常,
如果不做timeout处理,按照默认的时间去处理,将会导致服务积压严重甚至被脱死。
HttpClientParams.USE_EXPECT_CONTINUE //client handshake
如果服务不需要传输大量的数据,保持长连接,还是建议关闭掉此功能,设置为false。
否则,在业务量很大的情况下,很容易将服务端和自己都搞的很慢甚至拖死。
HttpClientParams params = new HttpClientParams();
// 避免'Expect: 100-continue' handshake
params.setParameter(HttpClientParams.USE_EXPECT_CONTINUE,Boolean.FALSE);
//设置ws连接超时时间
params.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, 1000);
client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS,params);
//设置连接参数
HttpClientParams hcparams = new HttpClientParams();
//避免'Expect: 100-continue' handshake
hcparams.setParameter(HttpClientParams.USE_EXPECT_CONTINUE, Boolean.FALSE);
hcparams.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, 120* 1000);//单位是毫秒
Client mclient = Client.getInstance(service);
mclient.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS, params);
public Client loadClient() throws MalformedURLException, Exception{
Client client = new Client(new URL(url));
client.setTimeout(20000);
HttpClientParams params = new HttpClientParams();
// 避免'Expect: 100-continue' handshake
params.setParameter(HttpClientParams.USE_EXPECT_CONTINUE,Boolean.FALSE);
//设置ws连接超时时间
params.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, 20000l);
client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS,params);
return client;
}
以上的做法在实际项目中发现行不通,现修改为:
URL _url = new URL(url);
HttpURLConnection httpConnection = (HttpURLConnection)_url.openConnection();
httpConnection.setReadTimeout(20000);//设置http连接的读超时,单位是毫秒
httpConnection.connect();
Client _client = new Client(httpConnection.getInputStream(), null);
_client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, String.valueOf( 20000 ));//设置发送的超时限制,单位是毫秒;
_client.setProperty(CommonsHttpMessageSender.DISABLE_KEEP_ALIVE, "true");
_client.setProperty(CommonsHttpMessageSender.DISABLE_EXPECT_CONTINUE, "true");
- 使用XFire调用WebService需注意的事项 (转载)
- 使用XFire调用WebService需注意的事项
- 使用XFire调用WebService需注意的事项
- 使用XFire调用WebService需注意的事项
- jquery ajax调用webservice(C#)要注意的几个事项
- xfire 客户端调用webservice注意要点
- xfire 客户端调用webservice注意要点
- 使用xFire调用Webservice接口
- 使用java的xfire调用.net的webservice-王亮
- 使用java的xfire调用.net的webservice-王亮
- 使用.net调用xfire发布webservice的统一安全认证
- 使用XFire创建WebService实例、C#调用
- JAVA 使用Xfire调用webservice interface
- Java使用XFire调用WebService接口
- JAVA中使用XFire调用WebService接口
- 使用xfire方式调用webservice接口
- Java使用XFire调用WebService接口
- Java使用XFire调用WebService接口
- php实现页面转向
- 数据库中如何导入导出excel
- C++ 仿函数(functor)
- eclipse下导入android源码
- 成贤学院谈 东南大学成贤学院
- 使用XFire调用WebService需注意的事项
- linux下jdk1.6配置
- 使用Mina传输Java对象
- Android_API Demos_入口分析
- 在eclipse3.4中使用JbossTools2插件开发Seam2工程 (转)
- How to get runtime LOV query script
- C#正则表达式(1):入门简介
- 实战虚拟机ubuntu1004下添加新硬盘分区
- NHibernate---简易操作流程