51,409
社区成员
发帖
与我相关
我的任务
分享 public static void main(String[] args) {
// 以下和服务端配置类似,不对,应该说服务端和这里的安全验证配置一致
Map<String, Object> outProps = new HashMap<String, Object>();
outProps.put(WSHandlerConstants.ACTION,
WSHandlerConstants.USERNAME_TOKEN);
outProps.put(WSHandlerConstants.USER, "zxfw");
outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);
// 指定在调用远程ws之前触发的回调函数WsClinetAuthHandler,其实类似于一个拦截器
outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS,
WsClinetAuthHandler.class.getName());
ArrayList list = new ArrayList();
// 添加cxf安全验证拦截器,必须
list.add(new SAAJOutInterceptor());
list.add(new WSS4JOutInterceptor(outProps));
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
// WebServiceSample服务端接口实现类,这里并不是直接把服务端的类copy过来,具体请参考http://learning.iteye.com/blog/1333223
factory.setServiceClass(IZxfwWebService.class);
// 设置ws访问地址 ,隐秘下吧,要不这接口就完全曝光了
factory.setAddress("http://183.xx.xxx.xxx:xxxx/xxxxxxxxx/xxxxx/ZxfwWebService");
//注入拦截器,用于加密安全验证信息
factory.getOutInterceptors().addAll(list);
IZxfwWebService service = (IZxfwWebService) factory.create();
String response;
File file = new File("C:/Users/Administrator/Desktop/测试咨询第三方接口数据.txt");
try {
FileInputStream in = new FileInputStream(file);
InputStreamReader reader = null;
StringBuffer sb = new StringBuffer();
reader = new InputStreamReader (new FileInputStream(file),"GBK");
BufferedReader bufReader = new BufferedReader(reader);
String tempString = null;
int line = 1;
// 一次读入一行,直到读入null为文件结束
while ((tempString = bufReader.readLine()) != null) {
sb.append(tempString);
// 显示行号
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
response = service.requestZxfw(sb.toString());
System.out.println(response);
} catch (Exception e) {
e.printStackTrace();
}
} @WebService(targetNamespace = "http://com.foresee.portal.zyywService.zxfw.service.impl/ZxfwService")
public interface IZxfwWebService {
/**
* @param requestxml
* @return
*/
public @WebResult(name = "requestxml")
String requestZxfw(@WebParam(name = "requestxml") String requestxml)
throws Exception;
/**
* @param requestxml
* @return
*/
public @WebResult(name = "requestxml2")
String testPush(@WebParam(name = "requestxml2") String requestxml)
throws Exception;
}public class WsClinetAuthHandler implements CallbackHandler {
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
System.out.println("identifier: " + pc.getIdentifier());
pc.setPassword("foresee-zxfw-service");
}
}
}