importcom.primeton.mq.service.DemoService
importorg.apache.cxf.endpoint.Client
importorg.apache.cxf.jaxws.JaxWsProxyFactoryBean
importorg.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory
importorg.apache.cxf.transport.http.HTTPConduit
importorg.apache.cxf.transports.http.configuration.HTTPClientPolicy
publicclassdemo{
publicstaticvoid main(String[] args) {
//创建动态客户端
JaxWsDynamicClientFactoryfactory =JaxWsDynamicClientFactory.newInstance()
Clientclient = factory.createClient("http://localhost:8090/demo/api?wsdl")
// 需要密码的情况需要加上用户名和密码
//client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME,PASS_WORD))
HTTPConduitconduit = (HTTPConduit) client.getConduit()
HTTPClientPolicyhttpClientPolicy = newHTTPClientPolicy()
httpClientPolicy.setConnectionTimeout(2000)//连接超时
httpClientPolicy.setAllowChunking(false)//取消块编码
httpClientPolicy.setReceiveTimeout(120000)//响应超时
conduit.setClient(httpClientPolicy)
//client.getOutInterceptors().addAll(interceptors)//设置拦截器
try{
Object[] objects = newObject[0]
// invoke("方法名",参数1,参数2,参数3....)
objects = client.invoke("sayHello","sujin")
System.out.println("返回数据:"+ objects[0])
}catch(Exceptione){
e.printStackTrace()
}
有时使用httpclient的时候,需要等待N长时间,可能此时你决定放弃或者重试。实现上非常简单添加一个参数即可/这里的超时单位是毫秒。这里的http.socket.timeout相当于SO_TIMEOUT
httpClient.getParams().setIntParameter("http.socket.timeout",3000)
HttpConnectionManagerParams managerParams
= httpClient.getHttpConnectionManager().getParams()
// 设置连接超时时间(单位毫秒)
managerParams.setConnectionTimeout(30000)
// 设置读数据超时时间(单位毫秒)
managerParams.setSoTimeout(120000)
1,设置get方法请求超时为 5 秒
GetMethod getMethod= new GetMethod(url)
getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT,5000 )
2,设置 Http 连接超时为5秒
HttpClient httpClient= new HttpClient()
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000 )
设置连接超时和请求超时,这两个超时的意义不同,需要分别设置。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)