webservice 客户端动态调用

本地测试cxf  webservice 服务端时,动态调用cxf服务端,测试客户端代码如下:

/**
 * 
 */
package cxfClient;

import java.io.StringWriter;

public class TestDomainQueryInterface {

	/**
	 * @Description TODO
	 * @return void
	 * @author 
	 */
	private static final String testUrl = "http://localhost:8080/is/webservice/OrteQuery?wsdl";

	public static void main(String[] args) throws Exception {
		// xml生成
		Document doc = DocumentHelper.createDocument();
		Element root = doc.addElement("request");
		String domains = "baidu.com,d01.com,ali.com";
		String[] domain = domains.split(",");
		for (String dd : domain) {
			root.addElement("domainName").addText(dd);
		}
		String xml = doc.asXML();
		byte[] bb = xml.getBytes();
		System.out.println(xml);

		// 准备接口需要的参数
		// 1,先对xmlAES加密
		byte[] skey = AESDemo.decodeHex("744d18b09a228b7f2bfd");
		byte[] iv = AESDemo.decodeHex("b0674233111f2");
		byte[] cc = AESDemo.encrypt(bb, skey, iv);

		// 2,Base64编码
		String request = Md5Base64Util.encodeBase64String(cc);
		// 模拟字符串
		String randVal = "aaasssdddfffghjklmnb";
		// 生成pwdhash

		String passWord = "ORJUZm8WIfLxqZIF";// CommProperties.USERSIGN;
		String pwdHash = Digests.sha256String((passWord + randVal).getBytes("utf-8"));

		JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
		Client client = dcf.createClient(testUrl);

		Object[] objects = client.invoke("query_accelerate_info", "79918c7a4a744fa34aaa", request, randVal,
				pwdHash, 1, 0);

		String xmlString = (String) objects[0];
		// 格式化打印
		Document docu = DocumentHelper.parseText(xmlString);
		OutputFormat format = OutputFormat.createPrettyPrint();

		// stringWriter字符串是用来保存XML文档的
		StringWriter stringWriter = new StringWriter();
		// xmlWriter是用来把XML文档写入字符串的(工具)
		XMLWriter xmlWriter = new XMLWriter(stringWriter, format);

		// 把创建好的XML文档写入字符串
		xmlWriter.write(docu);

		// 打印字符串,即是XML文档
		System.out.println(stringWriter.toString());
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值