客户端传入服务端参数为空,原因是addparameter传入参数名设置为arg0,arg1.....就没问题,不能设置本身的参数名。
public String invokeRemoteFuc() {
String endpoint = "http://192.168.1.153:8888/SendManagerDataInfo?wsdl";
String result = "no result!";
Service service = new Service();
Call call;
// Object[] object = new Object[2];
String s1 = "355";//Object是用来存储方法的参数
String s2 = "<Request>\n" +
"\t<Header>\n" +
"\t\t<SourceSystem>11</SourceSystem> \n" +
"\t\t<MessageID>22</MessageID>\n" +
"\t</Header>\n" +
"\t<Body>\n" +
"\t\t<CT_DeptList>\n" +
"<CT_Dept>\n" +
"<CTD_CategoryCode>1</CTD_CategoryCode>\n" +
"<CTD_Code>1</CTD_Code>\n" +
"<CTD_CodesystemCode>1 </CTD_CodesystemCode>\n" +
"<CTD_Desc>1</CTD_Desc>\n" +
"<CTD_Spell>1</CTD_Spell>\n" +
"<CTD_Category>1</CTD_Category>\n" +
"<CTD_Property>1</CTD_Property>\n" +
"<CTD_Rank>1</CTD_Rank>\n" +
"<CTD_DepartNature>1</CTD_DepartNature>\n" +
"<CTD_EndDate>1</CTD_EndDate>\n" +
"<CTD_HosCode>1</CTD_HosCode>\n" +
"<CTD_OfficeAddress>1</CTD_OfficeAddress>\n" +
"<CTD_OfficePhone>1</CTD_OfficePhone>\n" +
"<CTD_ParentDeptCode>1</CTD_ParentDeptCode>\n" +
"<CTD_GroupCode>1</CTD_GroupCode>\n" +
"<CTD_GroupDesc>1</CTD_GroupDesc>\n" +
"<CTD_Remarks>1</CTD_Remarks>\n" +
"<CTD_StartDate>20</CTD_StartDate>\n" +
"<CTD_Status>1</CTD_Status>\n" +
"<CTD_UpdateUserCode>1</CTD_UpdateUserCode>\n" +
"<CTD_UpdateDate>1</CTD_UpdateDate>\n" +
"<CTD_UpdateTime>1</CTD_UpdateTime>\n" +
"</CT_Dept>\n" +
"</CT_DeptList> \n" +
"\t</Body>\n" +
"</Request>";
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));// 远程调用路径
call.setOperationName(new QName("http://service.ehms.chni.com/","SendManagerDataInfo"));// 调用的方法名
// 设置参数名:
call.addParameter("arg0", // 参数名
XMLType.XSD_STRING,// 参数类型:String
ParameterMode.IN);// 参数模式:'IN' or 'OUT'
call.addParameter("arg1", XMLType.XSD_STRING,// 参数类型:String
ParameterMode.IN);
// 设置返回值类型:
call.setReturnType(XMLType.XSD_STRING);// 返回值类型:String
result = (String) call.invoke(new Object[]{s1,s2});// 远程调用
} catch (Exception e) {
Log4jUtil.getLogger(this).error("异常1 {}", ExceptionUtils.getStackTrace(e));
}
return result;
}
public static void main(String[] args) {
PullTest t = new PullTest();
String result = t.invokeRemoteFuc();
System.out.println(result);
}