【问题标题】:The XML document is not well formed error in Paperless Document API无纸文档 API 中的 XML 文档格式错误
【发布时间】:2014-11-27 14:15:33
【问题描述】:

我正在向 UPS 无纸化文档 API 发送 POST 请求以上传用户创建的表单,但我收到 XML 文档格式不正确 我的请求消息是

<?xml version=\"1.0\"?>
<UPSSecurity>
  <UsernameToken>
    <Username>******</Username>
    <Password>******</Password>
  </UsernameToken>
  <ServiceAccessToken>
    <AccessLicenseNumber>*************</AccessLicenseNumber>
  </ServiceAccessToken>
</UPSSecurity>

<?xml version=\"1.0\"?>
<UploadRequest>
<Request>
<TransactionReference>
  <CustomerContext></CustomerContext>
</TransactionReference>
</Request>
<ShipperNumber>??????</ShipperNumber>
<UserCreatedForm>
  <UserCreatedFormFileName>Sample Test File</UserCreatedFormFileName>
  <UserCreatedFormFile>SGVsbG8gQW5rdXI=</UserCreatedFormFile>
  <UserCreatedFormFileFormat>txt</UserCreatedFormFileFormat>
  <UserCreatedFormDocumentType>011</UserCreatedFormDocumentType>
</UserCreatedForm>
</UploadRequest>

使用 REST 发布此请求后 我收到此回复..

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<soapenv:Fault>
<faultcode>Client</faultcode>
<faultstring>An exception has been raised as a result of client data.</faultstring>
<detail>
<err:Errors xmlns:err="http://www.ups.com/schema/xpci/1.0/error">
<err:ErrorDetail>
<err:Severity>Hard</err:Severity>
<err:PrimaryErrorCode>
<err:Code>10001</err:Code>
<err:Description>The XML document is not well formed</err:Description>
<err:Digest>XML Declaration not well-formed
org.apache.xmlbeans.impl.piccolo.io.FileFormatException: XML Declaration not well-formed
at org.apache.xmlbeans.impl.piccolo.xml.XMLDeclParser.parse(XMLDeclParser.java:907)
at org.apache.xmlbeans.impl.piccolo.xml.XMLInputReader.parseXMLDeclaration(XMLInputReader.java:56)
at org.apache.xmlbeans.impl.piccolo.xml.XMLStreamReader.processXMLDecl(XMLStreamReader.java:687)
at org.apache.xmlbeans.impl.piccolo.xml.XMLStreamReader.reset(XMLStreamReader.java:119)
at org.apache.xmlbeans.impl.piccolo.xml.DocumentEntity.open(DocumentEntity.java:94)
at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.reset(PiccoloLexer.java:982)
at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:709)
at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3456)
at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
at org.apache.xmlbeans.XmlObject$Factory.parse(XmlObject.java:663)
at com.ups.uxf.process.ServiceRequest.setMessage(ServiceRequest.java:545)
at com.ups.uxf.servlet.UXFServlet._doPost(UXFServlet.java:185)
at com.ups.wsf.servlet.WSFServlet.doPost(WSFServlet.java:511)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:751)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:845)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:338)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:75)
at com.ups.webappcommon.filter.AkamaiFilter.doFilter(AkamaiFilter.java:33)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3262)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2171)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2075)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1514)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
</err:Digest>
</err:PrimaryErrorCode>
<err:Location/>
</err:ErrorDetail>
</err:Errors>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>

我正在使用 RESTClient。 请帮忙。提前致谢。

【问题讨论】:

  • 看起来您正在混淆 SOAP 和 REST。第一个示例包含 2 个文档,它们总是无效的。第二个 SOAP 示例是我期望将 REST XML 发布到 SOAP 中的内容。
  • 您的问题解决了吗?
  • 不..我更新了我的问题..
  • 您的更新不是合理的改进;你完全改变了问题。我已经回滚了你过于广泛的改变。请在此处完成并在必要时创建一个关于您的新问题的新问题。谢谢。

标签: xml web-services api ups


【解决方案1】:

您的请求消息是not well-formed,因为:

  1. 第一个 XML 声明不正确。

    补救措施:删除\字符。

  2. 第二个 XML 声明不正确,因为它还包含 \ 字符并且因为 there can be at most one XML declaration and, if it appears, it must be at the very top of an XML document

    补救措施:删除第二个 XML 声明。

  3. 请求有两个根元素。

    补救措施:删除其中一个,或将它们都包装在一个根元素中。

【讨论】:

  • 您好,我现在遇到同样的问题...我无法删除根元素,因为 UPS Api 文档希望它们存在,正如 Ankur 在他的问题中所显示的那样。也许我应该首先发送带有登录名的第一个 XML,然后发送其余的?这会有帮助吗?谢谢
  • @ZdeněkBednařík:请发布一个新问题,其中包含针对您的问题的minimal reproducible example。谢谢。
  • 我和这里的问题一样......但它没有解决方案。你的回答看起来很有趣,这就是为什么我问你为什么当 UPS 想要两个声明存在时我们应该删除第二个 xml 声明(根据文档)
  • 任何说明两个 XML 声明应该出现在同一个 XML 文件中的文档都是完全错误的,因为它会使 XML 格式不正确,因此根本不符合 XML 标准.
  • 这个答案是完全正确的,也可能对您的问题有所帮助,但如果您需要进一步的帮助,请发布一个新问题并附上您的案例详情。
【解决方案2】:

尝试在肥皂标题中包含UPSSecurity,在肥皂正文中包含UploadRequest

【讨论】:

    猜你喜欢
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多