50,542
社区成员
发帖
与我相关
我的任务
分享
@Test
public void cl1(){
String inMsg="<Header>" +
" <SystemType>COMMON</SystemType>" +
" <DataCenterType>HIS</DataCenterType>" +
" <FunctionName>GetOutpatientInfo</FunctionName>" +
" <ReturnType>xml</ReturnType>" +
"</Header>" +
"<Body>" +
" <CardNo>"+"123"+"</CardNo>" +
"</Body>";
try {
//1. 创建服务代理工厂(继承 javax.xml.ws.Service 的类)
System.out.println("===============(1) "+System.currentTimeMillis());
HisDataOut factory =new HisDataOut();
System.out.println("===============(2) "+System.currentTimeMillis());
//2. 创建服务代理
HisDataOutSoap hisDataOutSoap = factory.getHisDataOutSoap();
System.out.println("===============(3) "+System.currentTimeMillis());
//3. 获取Client 对象
Client client = ClientProxy.getClient(hisDataOutSoap);
System.out.println("===============(4) "+System.currentTimeMillis());
HTTPConduit conduit = (HTTPConduit) client.getConduit();
System.out.println("===============(5) "+System.currentTimeMillis());
//获取HttpClient代理,并设置代理的端口号,超时时间等。
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
System.out.println("===============(6) "+System.currentTimeMillis());
// 设置代理的ip 和 端口号
// httpClientPolicy.setProxyServer("");
// httpClientPolicy.setProxyServerPort(8080);
// 设置连接超时
httpClientPolicy.setConnectionTimeout(1000);
// 设置读取超时
httpClientPolicy.setReceiveTimeout(1000);
conduit.setClient(httpClientPolicy);
System.out.println("===============(7) "+System.currentTimeMillis());
String runService = hisDataOutSoap .runService(inMsg);
System.out.println("===============(8) "+System.currentTimeMillis());
System.out.println(runService);
}catch (Exception e){
e.printStackTrace();
}
}
@Test
public void cl2() {
// 创建动态客户端
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("http://172.16.10.16:8005/HisDataOut.asmx?wsdl");
HTTPConduit conduit = (HTTPConduit) client.getConduit();
HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setConnectionTimeout(500); //连接超时时间
policy.setReceiveTimeout(500);//请求超时时间.
conduit.setClient(policy);
// 需要密码的情况需要加上用户名和密码
// client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME,PASS_WORD));
Object[] objects = new Object[0];
try {
Thread.sleep(600);
// invoke("方法名",参数1,参数2,参数3....);
objects = client.invoke("runService", "你好。。。");
System.out.println("返回数据:" + objects[0]);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void cl3() {
String wsdlUrl = "http://172.16.10.16:8005/HisDataOut.asmx?wsdl";
// 动态调用的客户端工厂类
DynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
final Client client = dcf.createClient(wsdlUrl);
// 设置超时单位为毫秒
HTTPConduit conduit = (HTTPConduit)client.getConduit();
HTTPClientPolicy policy = new HTTPClientPolicy();
policy.setConnectionTimeout(100);
policy.setAllowChunking(false);
policy.setReceiveTimeout(300);
conduit.setClient(policy);
final String param = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><DATA><OUTPUT><STATUS></STATUS><MESSAGE></MESSAGE></OUTPUT></DATA>";
Object[] objects = new Object[0];
try {
objects = client.invoke("openService", param);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(objects[0]);
}