我试图按照以下post / cXML用户指南中的建议,使用自定义Java应用程序(使用Apache commons)将附件发送到Ariba网络。

Problem Posting MIME encoded attachment to Ariba Supplier Network

从Ariba获取“ EOF跳过标题”错误响应

根据我的研究,当未找到结束边界,但我的消息具有结束边界时,将引发上述错误。

请让我知道是否有人遇到类似问题并且能够解决。

谢谢你的帮助。

这是我发布到Ariba的消息格式。

以下是http标头

POST / HTTP/1.1
Content-Type: multipart/related;boundary="1403166176143"; type="text/xml"; start="<[email protected]>"
User-Agent: Jakarta Commons-HttpClient/3.0.1
Content-Length: 4356
Host: Target Server


&这是邮件的正文

--1403166176143
Content-Type: text/xml; charset=UTF-8
Content-Disposition: attachment; filename=PO.xml
Content-ID: <[email protected]>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.021/cXML.dtd">

All the PO related cXML

 <Comments>Tax Rates:<Attachment><URL>cid:[email protected]</URL></Attachment></Comments>
      </ItemOut>
    </OrderRequest>
  </Request>
</cXML>


--1403166176143
Content-type: text/plain;
Content-ID: <[email protected]>
Content-Disposition: attachment; filename=FirstAttach.txt
Content-length: 44
VGhpcyBpcyB0aGUgZmlyc3QgUE8gYXR0YWNobWVudC4=
--1403166176143--


使用Apache Commons PostMethod

最佳答案

最后的MIME部分有很多问题。


零件标题和主体之间没有空线。这是一个致命错误,导致无法正确解析结构。
没有Content-Transfer-Encoding:标头。主体显然位于base64中;如果没有适当的标识头,则将其视为纯文本。这会导致对附加数据的错误分析,但不会引入语法错误。
Content-Type:标头似乎被截断了。可以省略charset=参数,但是如果您不打算包含它,为什么字段以分号结尾?这不是关键性的遗漏,但暗示可能存在其他问题。 (编码的数据当前为纯ASCII,因此默认字符集就可以了。)

07-24 19:09