Frage

Ich versuche einen Webdienst anzurufen, aber vor einem seltsamen Verhalten. Wir haben einen Web-Service-Service auf meinem Server, aber der Code ist nicht für uns geöffnet. Sie können daher nicht sehen Die Antwort auf den Testzweck. Dieses Eingabefeld nimmt die Eingabe im folgenden genannten Format ein

<CONTENT>
 <CONTENTID></CONTENTID>
 <DOCUMENTID>DRI2</DOCUMENTID>
 <LOCALECODE>en_US</LOCALECODE>
 <LATEST_VERSION>false</LATEST_VERSION>
 <INCREASEVIEWCOUNT>false</INCREASEVIEWCOUNT>
 <ACTIVITY_TYPE></ACTIVITY_TYPE>
</CONTENT>

Es funktioniert gut in dieser Benutzeroberfläche, aber wenn ich versuche, diesen Webdienst über meinen Java -Code zu nennen, wird er verbunden und wird durch den Dienst autorisiert. Wenn ich jedoch versuche, die obige Methode anzurufen, gibt es mir die folgende Fehlermeldung

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXParseException: Content is not allowed in prolog.
 faultActor: 
 faultNode: 
 faultDetail: 
 {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException: Content is not allowed in prolog.
 at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
 at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
 at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
 at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
 at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
 at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
 at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
 at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
 at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
 at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
 at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
 at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
 at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
 at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
 at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
 at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
 at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
 at org.apache.axis.client.Call.invoke(Call.java:2767)
 at org.apache.axis.client.Call.invoke(Call.java:2443)
 at org.apache.axis.client.Call.invoke(Call.java:2366)
 at org.apache.axis.client.Call.invoke(Call.java:1812)
 at com.inquira.imwows.generated.ContentServicesSoapBindingStub.getContentRecord(ContentServicesSoapBindingStub.java:262)
 at com.inquira.prep.GetWebService.getcontentRecord(GetWebService.java:87)
 at com.inquira.prep.TestWs.main(TestWs.java:13)

 {http://xml.apache.org/axis/}hostname:umeshawasthi

org.xml.sax.SAXParseException: Content is not allowed in prolog.
 at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
 at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:701)
 at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
 at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
 at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
 at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
 at org.apache.axis.client.Call.invoke(Call.java:2767)
 at org.apache.axis.client.Call.invoke(Call.java:2443)
 at org.apache.axis.client.Call.invoke(Call.java:2366)
 at org.apache.axis.client.Call.invoke(Call.java:1812)
 at com.inquira.imwows.generated.ContentServicesSoapBindingStub.getContentRecord(ContentServicesSoapBindingStub.java:262)
 at com.inquira.prep.GetWebService.getcontentRecord(GetWebService.java:87)
 at com.inquira.prep.TestWs.main(TestWs.java:13)
Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog.
 at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
 at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
 at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
 at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
 at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
 at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
 at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
 at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
 at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
 at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
 at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
 at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
 at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
 ... 11 more

Im Folgenden finden Sie den Code zum Generieren des erforderlichen XML

inputXml.append("<CONTENT>");
   inputXml.append("<CONTENTID>").append("</CONTENTID>");
   inputXml.append("<DOCUMENTID>").append("DRI2").append("</DOCUMENTID>");
   inputXml.append("<LOCALECODE>").append("en_US").append("</LOCALECODE>");
   inputXml.append("<LATEST_VERSION>").append("false").append("</LATEST_VERSION>");
   inputXml.append("<INCREASEVIEWCOUNT>").append("false").append("</INCREASEVIEWCOUNT>");
   inputXml.append("<ACTIVITY_TYPE>").append("</ACTIVITY_TYPE>");
   inputXml.append("</CONTENT>");

und das erzeugte XML ist wie unten

<CONTENT><CONTENTID></CONTENTID><DOCUMENTID>DRI2</DOCUMENTID><LOCALECODE>en_US</LOCALECODE><LATEST_VERSION>false</LATEST_VERSION><INCREASEVIEWCOUNT>false</INCREASEVIEWCOUNT><ACTIVITY_TYPE></ACTIVITY_TYPE></CONTENT>

Ich habe sogar das Timing der generierten Zeichenfolge wie unten durchgeführt

inputXml.toString().trim().replaceFirst("^([\\W]+)<","<");

Aber ich kann nicht herausfinden, was schief geht. Ich bin mir sicher

Jede diesbezüglich helfe Hilfe ist sehr hochgeführt

War es hilfreich?

Lösung

Dieser Fehler hängt wahrscheinlich mit einer Byte -Bestellmarke (BOM) vor dem tatsächlichen XML -Inhalt zusammen. Sie müssen die zurückgegebene Zeichenfolge analysieren und die BOM verwerfen, damit Saxparser das Dokument korrekt verarbeiten kann.

Sie finden eine mögliche Lösung hier.

Andere Tipps

Um es einfach zu entfernen, fügen Sie Ihre XML -Datei in Notepad ein. Sie sehen das zusätzliche Zeichen vor dem ersten Tag. Entfernen Sie es und fügen Sie es wieder in Ihre Datei ein - BOF

Überprüfen Sie den XML. Es ist kein gültiges XML.

Prolog ist die erste Zeile mit XML -Versionsinformationen. Es ist in Ordnung, es nicht in Ihr XML aufzunehmen.

Dieser Fehler wird geworfen, wenn der Parser zu Beginn des Dokuments ein ungültiges Tag liest. Normalerweise wo sich der Prolog befindet.

z.B

  1. Wurzel/>u003Cdocument>
  2. Wurzelu003Cdocument>

Dieser Fehler kann kommen, wenn in Ihrer WSDL- oder XSD -Datei ein Validierungsfehler vorliegt. Zum Beispiel habe ich auch das gleiche Problem, als ich WSDL2Java ausgeführt habe, um meine WSDL -Datei zum Generieren des Clients zu konvertieren. In einem meiner XSD wurde es wie unten definiert

<xs:import schemaLocation="" namespace="http://MultiChoice.PaymentService/DataContracts" />

Wo die Schemalokalisierung leer war. Durch die Bereitstellung der richtigen Daten in der Schemalokation löste mein Problem.

<xs:import schemaLocation="multichoice.paymentservice.DataContracts.xsd" namespace="http://MultiChoice.PaymentService/DataContracts" />

Ich habe dem gleichen Problem konfrontiert. Unsere Anwendung, die auf vier Anwendungsservern ausgeführt wird und aufgrund eines ungültigen Schemasstandorts auf einem der Webdienst -WSDL -Threads auf den Servern generiert wird. Die Anwendungen kamen häufig ab. Nach dem korrigierten Schema -Standort wurde das Problem behoben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top