前言:项目中遇到调用webservice 增加表头验证的逻辑,于是从网上找资料。一直跪倒底。没解决。终于功夫不负有心人。哈哈哈哈。解决方法用的是直接访问http的方法,拼接xml。
如果还有小白不知道xml拼接是什么鬼,那么到现在你用过测试工具测试一下你的webservice 可以调通吗。比如 postman,soapui等
里面测试的时候不就是xml格式的吗。
一。用于拼接xml的表头信息 表头的标签根据自己的情况设置 里面包含用户和密码
public static String getSoapHeader(){
//上面代码为从缓存中取到我们需求传递到认证头的数据 下面开始添加认证头
StringBuffer soapHeader = new StringBuffer();
soapHeader.append("");
soapHeader.append("");
soapHeader.append("HICUser ");
soapHeader.append("passWord ");
soapHeader.append(" ");
soapHeader.append(" ");
return soapHeader.toString();
}
二.拼接主体的xml信息 这个方法是我传递数据的对象,你们可以删掉用你们自己的
public static String addAsnInfo(AsnChild child,Asn asn,Integer falg) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
StringBuffer template = new StringBuffer("");
template.append(""+child.getPlant()+" ");
template.append(""+asn.getVendorCode().getCode()+" ");
template.append(""+asn.getIsBonded()+" ");
template.append(""+child.getLocation()+" ");
template.append(""+asn.getAsnNo()+" ");
template.append(""+child.getAsnLine()+" ");
template.append(""+format.format(asn.getDeliveryDate())+" ");
template.append(""+child.getPo()+" ");
template.append(""+child.getPoLine()+" ");
template.append(""+child.getMaterial().getMaterialCode()+" ");
return template.toString();
}
三.把表头和body进行拼接 返回整体的xml字符串
public static String getAccInfoXml(List list,Asn asn,Integer falg){
StringBuffer template = new StringBuffer();
String header = getSoapHeader();
template.append("");
template.append("");
template.append(header);
template.append("");
template.append("");
template.append("");
for (int i = 0; i < list.size(); i++) {
AsnChild child = list.get(i);
template.append("");
template.append(addAsnInfo(child,asn,falg));
template.append(" ");
}
template.append(" ");
template.append(" ");
template.append(" ");
template.append(" ");
return template.toString();
}
四.调用方法
public static String sendHic(List list,Asn asn,Integer falg){
String dataJson = "";
List
文章可能写的不是特备好。见谅!如果还有不懂的小伙伴,可以进群直接找我 551937103