我该如何修复“Invalid Content-Type:text / html。这是一条错误消息而不是SOAP响应吗?”

时间:2017-06-05 10:59:17

标签: java xml web-services soap

我必须创建一个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=&amp;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;
}

0 个答案:

没有答案