我使用的是Sping Boot 和Java 11。
我正在尝试编写一个SOP客户端来调用下面的Web服务。服务提供商已经提供了一个工具来测试它,从这里你可以看到它正在按预期工作。
结果-返回200:
我使用提供的WSDL成功生成存根,然后使用生成的ObjectFactory
编写下面的Java客户端:
String PROCON_SOAP_ACCESS_URL = "http://********/ProCONWS/WebService_PCSOrderEntry.asmx";
public CalculateMD5Response calculateMD5(final String userName) {
String msg = null;
String parameters = null;
try {
// request
ObjectFactory objectFactory = new ObjectFactory();
CalculateMD5 request = objectFactory.createCalculateMD5();
request.setUser("pcscord");
request.setTimestamp(DateUtil.dateToString(new Date(), "yyyyMMdd HHmmss"));
request.setSecretWord("********");
parameters = URLEncoder.encode("user="+request.getUser()+"×tamp="+request.getTimestamp()+"&Secret_word="+request.getSecretWord(), "UTF-8");
PROCON_SOAP_ACCESS_URL = PROCON_SOAP_ACCESS_URL + "/calculate_MD5";//?"+parameters;
// call the SOAP service
logger.info("About to call Procon SOAP Service: " + PROCON_SOAP_ACCESS_URL + ".");
JAXBElement<String> jaxbElementPayload = objectFactory.createString(parameters);
Object response = getWebServiceTemplate().marshalSendAndReceive(PROCON_SOAP_ACCESS_URL, jaxbElementPayload);
logger.info("Called Procon SOAP service. Response: " + response);
} catch (Exception e) {
msg = "FAILURE: There was an error calling the Procon SOAP service. Exception: "+e.getMessage()+". URL: "+PROCON_SOAP_ACCESS_URL+" and PARAMETERS: "+parameters+".";
logger.error(msg);
}
return null;
}
但是,这将返回500错误:
Internal Server Error [500]
据我所知,getWebServiceTemplate().marshalSendAndReceive
应该使用给定的URL和负载执行SOAPPOST请求。
我是否使用了错误的生成存根?URLEncoder.encode
是否错误地格式化了有效负载?如有任何反馈,敬请谅解。
1条答案
按热度按时间camsedfj1#
检查元素的名称。可以添加
@XmlRootElement("<ElementName>")
。