我必须创建一个soap请求,它在创建后会给我一些错误。
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Invalid Content-Type:text/html. Is this an error message instead of a SOAP response?
at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.identifyContentType(Unknown Source)
at com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl.createMessage(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(Unknown Source)
at packageH.SoapCall.main(SoapCall.java:41)
这是代码:
public static void main(String[] args){
try {
String xml="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:bcc=\"http://www.huawei.com/bme/cbsinterface/bccustomizedservices\" xmlns:cbs=\"http://www.huawei.com/bme/cbsinterface/cbscommon\" xmlns:bcc1=\"http://www.huawei.com/bme/cbsinterface/bccommon\"><soapenv:Header/><soapenv:Body><bcc:QueryBalFuRequestMsg><RequestHeader><cbs:Version>1</cbs:Version><cbs:BusinessCode>GetAllBalances</cbs:BusinessCode><cbs:MessageSeq>896879678676778968</cbs:MessageSeq><cbs:AccessSecurity><cbs:LoginSystemCode>102</cbs:LoginSystemCode><cbs:Password>O2+SSm/iwzGMtKK7LP0WUi7UqvfMgB/bCebuArha6VM=&lt;</cbs:Password></cbs:AccessSecurity></RequestHeader><QueryBalFuRequest><bcc:QueryObj><bcc:SubAccessCode><bcc1:PrimaryIdentity>550022002</bcc1:PrimaryIdentity></bcc:SubAccessCode></bcc:QueryObj><bcc:QueryTarget>0</bcc:QueryTarget></QueryBalFuRequest></bcc:QueryBalFuRequestMsg></soapenv:Body></soapenv:Envelope>";
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
String serverURI = "http://localhost:8088/";
String serverURI1="http://www.huawei.com/bme/cbsinterface/";
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage =getSoapMessageFromString(xml);
MimeHeaders headers = soapMessage.getMimeHeaders();
headers.addHeader("SOAPAction", serverURI1 + "bccustomizedservices");
headers.addHeader("SOAPAction", serverURI1 + "cbscommon");
headers.addHeader("SOAPAction", serverURI1 + "bccommon");
soapMessage.saveChanges();
System.out.print("Request SOAP Message = ");
soapMessage.writeTo(System.out);
System.out.println();
SOAPMessage soapResponse = soapConnection.call(soapMessage, serverURI);
System.out.print("Request SOAP Message = ");
soapMessage.writeTo(System.out);
System.out.println("");
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
Source sourceContent = soapResponse.getSOAPPart().getContent();
System.out.print("\nResponse SOAP Message = ");
StreamResult result = new StreamResult(System.out);
transformer.transform(sourceContent, result);
soapConnection.close();
} catch (UnsupportedOperationException | SOAPException | IOException | TransformerException e) {
e.printStackTrace();
}
}
private static SOAPMessage getSoapMessageFromString(String xml) throws SOAPException, IOException {
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage(new MimeHeaders(), new ByteArrayInputStream(xml.getBytes(Charset.forName("UTF-8"))));
return message;
}