XML文档格式不正确。无纸文档API中存在错误

XML文档格式不正确。无纸文档API中存在错误,xml,web-services,api,ups,Xml,Web Services,Api,Ups,我正在向UPS无纸文档api发送POST请求,以上载用户创建的表单,但我发现XML文档格式不正确 我的请求消息是 <?xml version=\"1.0\"?> <UPSSecurity> <UsernameToken> <Username>******</Username> <Password>******</Password> </UsernameToken> <

我正在向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>

******
******
*************
??????
样本测试文件
SGVsbG8gQW5rdXI=
文本
011
在与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>

客户
客户端数据引发了异常。
硬的
10001
XML文档的格式不正确
XML声明格式不正确
org.apache.xmlbeans.impl.piccolo.io.FileFormatException:XML声明格式不正确
位于org.apache.xmlbeans.impl.piccolo.xml.XMLDeclParser.parse(XMLDeclParser.java:907)
位于org.apache.xmlbeans.impl.piccolo.xml.XMLInputReader.parsexmldesclaration(XMLInputReader.java:56)
位于org.apache.xmlbeans.impl.piccolo.xml.XMLStreamReader.processXMLDecl(XMLStreamReader.java:687)
位于org.apache.xmlbeans.impl.piccolo.xml.XMLStreamReader.reset(XMLStreamReader.java:119)
位于org.apache.xmlbeans.impl.piccolo.xml.DocumentEntity.open(DocumentEntity.java:94)
位于org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.reset(PiccoloLexer.java:982)
位于org.apache.xmlbeans.impl.piccolo.xml.piccolo.parse(piccolo.java:709)
位于org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3456)
在org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
位于org.apache.xmlbeans.XmlObject$Factory.parse(XmlObject.java:663)
位于com.ups.uxf.process.ServiceRequest.setMessage(ServiceRequest.java:545)
位于com.ups.uxf.servlet.UXFServlet.\u doPost(UXFServlet.java:185)
位于com.ups.wsf.servlet.WSFServlet.doPost(WSFServlet.java:511)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:751)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:845)
位于weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
位于weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:338)
位于weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
位于weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:75)
在com.ups.webappcommon.filter.akamaiflter.doFilter上(akamaiflter.java:33)
在weblogic.servlet.internal.WebAppServletContext$servleinvocationAction.run(WebAppServletContext.java:3262)
在weblogic.servlet.provider.wlssobjecthandle.run(wlssobjecthandle.java:57)上
位于weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2171)
位于weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2075)
位于weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1514)
位于weblogic.servlet.provider.ContainerSupportProviderImpl$WLSRequesteExecutor.run(ContainerSupportProviderImpl.java:255)
在weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
我正在使用RESTClient。 请帮忙。提前谢谢

您的请求消息是因为:
  • 第一个XML声明不正确

    补救措施:删除
    \
    字符

  • 第二个XML声明不正确,因为它还包含
    \
    字符,并且因为

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

  • 请求有两个根元素

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


  • 尝试在soap头中包含
    upsecurity
    ,并在soap正文中包含
    UploadRequest

    看起来您将soap和REST混为一谈。第一个示例包含2个文档,它们总是无效的。第二个SOAP示例是我希望将REST XML发布到SOAP的示例。您解决了问题吗?没有。我更新了我的问题。您的更新不是一个合理的改进;你完全改变了问题。我已经收回了你太多的零钱。请在此处完成,并在必要时针对您的新问题创建一个新问题。谢谢。你好,我现在也有同样的问题。。。我不能删除根元素,因为upsapi文档希望它们如Ankur在问题中所示。也许我应该先用login发送第一个XML,然后再发送其余的XML?会有帮助吗?Thanks@ZdeněkBednařík:请发布一个新问题,其中包括您的问题的特定部分。谢谢。我有和这里一样的问题。。。但它没有解决办法。你的答案看起来很有趣,这就是为什么我问你为什么我们要删除第二个xml声明,而UPS需要两个声明(根据文档)任何说明两个XML声明应该出现在同一个XML文件中的文档都是完全错误的,因为这会导致XML格式不正确,因此根本不符合XML的标准。这个答案完全正确,也可能有助于解决您的问题,但如果您需要进一步的帮助,张贴一个新的问题和你的案件的细节。