[英]Java Programatically Request SOAP Web Service Issue
我试图通过Java以编程方式向端点发出SOAP请求。 我是Java和Web服务的新手,所以不确定在这里做错了什么。
另外,我打印出SOAP消息,并将其粘贴到诸如postman之类的工具中,然后输入终点,然后发布成功。 所以我认为我的要求在这里不正确。
这是我的代码:
System.out.println("hey now!!!!");
try {
SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
SOAPConnection connection = scf.createConnection();
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage message = mf.createMessage();
SOAPBody body = message.getSOAPBody();
SOAPHeader header = message.getSOAPHeader();
SOAPElement getOpenPOs = body.addChildElement("GetOpenPOs", "", "https://www.autocrib.net");
SOAPElement U = getOpenPOs.addChildElement("U");
U.addTextNode("u");
SOAPElement P = getOpenPOs.addChildElement("P");
P.addTextNode("p");
SOAPElement N = getOpenPOs.addChildElement("N");
N.addTextNode("n");
SOAPElement Processed = getOpenPOs.addChildElement("Processed");
Processed.addTextNode("false");
SOAPElement StationEnd = getOpenPOs.addChildElement("StationEnd");
StationEnd.addTextNode("");
SOAPPart sp = message.getSOAPPart();
SOAPEnvelope envelope = sp.getEnvelope();
//MimeHeaders headers = message.getMimeHeaders();
//header.setHeader("Content-Type", "text/xml");
//message.getMimeHeaders().addHeader("SOAPAction", "GetOpenPOs");
message.getMimeHeaders().addHeader("Content-Type", "text/xml");
header.setAttribute("Content-Type", "text/xml");
message.saveChanges();
System.out.println("Envelope Body");
message.writeTo(System.out);
System.out.println();
SOAPMessage reply = connection.call(message,
"https://www24.autocrib.net/WebServices/AutoCribWS.asmx");
//String reply2 = connection.call(message, "https://www24.autocrib.net/WebServices/AutoCribWS.asmx").toString();
//sp = reply.getSOAPPart();
//envelope = sp.getEnvelope();
//body = envelope.getBody();
//System.out.println(body.toString());
System.out.println("Done!!!!!!!!!!!!!!!!!!!");
} catch (Throwable t) {
System.out.println("Something went wrong!!! " + t.toString());
}
}
运行以下代码时出现此错误:
2016年10月24日,下午1:56:57 com.sun.xml.internal.messaging.saaj.soap.MessageImplidentificationContentType严重:SAAJ0537:无效的内容类型。 可能是错误消息,而不是SOAP消息出问题了!!! com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:无效的Content-Type:text / html。 这是错误消息,而不是SOAP响应吗?
我猜我需要添加Content-Type
标头。 我做错了吗? 任何指导都会很棒。
谢谢,蒂姆
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl:无效的Content-Type:文本/ html。
SAAJ API引发异常是因为它认为您的Web服务返回的是响应文本/ html内容,而不是soap / xml内容。
因此,一个建议:研究邮递员返回的内容。 您确定它是soap / xml格式的吗? 您会注意到,这不是soap / xml内容,可以在WS的实现上进行工作,并且如果需要,可以调整收益以符合SOAP规范。
威尔科我想为您提供答案,但我认为我不能对此发表评论。 您的提示帮助我弄清楚了由于我拥有的用户代理标头,它确实在返回text / html。
再次感谢!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.