我试图按照以下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,因此默认字符集就可以了。)