Java “我怎样才能解决问题?”;无效的内容类型:text/html。这是一条错误消息而不是SOAP响应吗?”;
我必须创建一个soap请求,它在创建后会给我一些错误Java “我怎样才能解决问题?”;无效的内容类型:text/html。这是一条错误消息而不是SOAP响应吗?”;,java,xml,web-services,soap,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
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;
}
publicstaticvoidmain(字符串[]args){
试一试{
字符串xml=“1Getallbalances8968796778968102O2+SSm/iwzGMtKK7LP0WUi7UqvfMgB/bCebuArha6VM=<;5500220020”;
SOAPConnectionFactory SOAPConnectionFactory=SOAPConnectionFactory.newInstance();
SOAPConnection-SOAPConnection=soapConnectionFactory.createConnection();
字符串serverURI=”http://localhost:8088/";
字符串serverURI1=”http://www.huawei.com/bme/cbsinterface/";
MessageFactory MessageFactory=MessageFactory.newInstance();
SOAPMessage SOAPMessage=getSoapMessageFromString(xml);
MimeHeaders=soapMessage.getMimeHeaders();
headers.addHeader(“SOAPAction”,serverURI1+“bccustomizedservices”);
headers.addHeader(“SOAPAction”,serverURI1+“CBSComon”);
headers.addHeader(“SOAPAction”,serverURI1+“bccommon”);
soapMessage.saveChanges();
System.out.print(“请求SOAP消息=”);
soapMessage.writeTo(System.out);
System.out.println();
SOAPMessage soapResponse=soapConnection.call(SOAPMessage,serverURI);
System.out.print(“请求SOAP消息=”);
soapMessage.writeTo(System.out);
System.out.println(“”);
TransformerFactory TransformerFactory=TransformerFactory.newInstance();
Transformer Transformer=transformerFactory.newTransformer();
sourceContent=soapResponse.getSOAPPart().getContent();
System.out.print(“\n响应SOAP消息=”);
StreamResult结果=新的StreamResult(System.out);
transformer.transform(源内容、结果);
soapConnection.close();
}捕获(不支持操作异常| SOAPException | IOException | TransformerException e){
e、 printStackTrace();
}
}
私有静态SOAPMessage getSoapMessageFromString(字符串xml)引发SOAPException,IOException{
MessageFactory=MessageFactory.newInstance();
SOAPMessage message=factory.createMessage(new-MimeHeaders(),new-ByteArrayInputStream(xml.getBytes(Charset.forName(“UTF-8”)));
返回消息;
}
您需要找出响应实际包含的内容。正如异常消息所提示的,响应可能是一个错误页面。它可能会告诉您发送的SOAP请求有什么问题。。。遗憾的是,这不是来自请求的响应,因为它一直持续到SOAPMessage soapResponse=soapConnection.call(SOAPMessage,serverURI);我想你误解了我的评论。我理解你的回答,答案不是错误页面,因为有一些信息,如果出现错误,应该返回“没有答案”。问题是在发送消息之前,因为我已经检查过了,服务器端没有进行任何调用。。。(SOAP)服务器端没有收到呼叫的原因可能是呼叫正在转到其他地方。。。另外一个地方用HTML说“我不懂”。您是否确实看到了异常所抱怨的内容,或者这只是您的猜测?