本地测试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());
}
}