将 MIME 编码的附件发布到 Ariba Supply Network 时出现问题

2024-05-11

我在尝试使用 VB.NET 和 WebRequest 对象发布一些 cXML 文本和附件时遇到问题。我相信我正在格式化我希望正确发布的数据文本,因为它与 Ariba 提供的示例相匹配。

我不确定的是我是否正确使用 WebRequest 对象来进行发布。我将 Method 设置为“POST”,将 ContentType 设置为“multipart/mixed”。我可以成功发布 cXML(使用“text/xml”的 ContentType),因此我知道一般工作中的发布。

我从 Ariba 收到的消息是:

无法解析文档:缺少开始边界 [ANCLS-741552]

但是,如以下代码所示,存在一个开始边界。我删除了一些专有数据并将其替换为“...”。在 MIME 文本之后,我添加了我正在使用的相关 VB.NET 代码。

任何和所有建议都非常受欢迎和赞赏!

------=_boundary.20100210154837663.173702
Content-Type: text/xml; charset=UTF-8
Content-ID: Part1.5213.20100210154837663.319349

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

------=_boundary.20100210154837663.173702
Content-Type: application/octet-stream
Content-transfer-encoding: base64
Content-ID: 5213.20100210154837663.319349
Content-Disposition: attachment; filename=attachment_20100210154837663_125705.jpg
Content-Length: 5660

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAd
.
.
.
dC2Nz9dOaQ1ZVIilwIpaWvLEg7aWuauv/9k=
------=_boundary.20100210154837663.173702--


Dim myWriter As StreamWriter = Nothing

Dim strUri As String = "https://service.ariba.com/service/transaction/cxml.asp"

Dim WebReq As WebRequest = System.Net.WebRequest.Create(strUri)

WebReq.Method = "POST"
WebReq.ContentType = "multipart/mixed"

myWriter = New StreamWriter(WebReq.GetRequestStream())
myWriter.Write(xmlText)
myWriter.Close()

Dim WebRsp As HttpWebResponse
WebRsp = CType(WebReq.GetResponse(), HttpWebResponse)

Bill - 我从 Ariba 获得了一些信息,认为它可能对您有用:

  • 整个有效负载的内容类型声明指定了边界
  • 每个部分前面都有一个“--”,后跟边界
  • 该文档以“--”结尾,后跟边界,然后是“--”
  • 每个部分的 Content-ID 包含在尖括号中
  • 附件的 Content-ID 在评论/附件中的 URL 元素中引用(不带尖括号)

也许你可以尝试使用短路的边界字符串。另外,请注意“start”参数。这是对我有用的:

request.ContentType =  "multipart/related;boundary=outerboundary1;type=""text/xml"";start=""<x.xml>"""

具有上述边界和开始设置的示例 XML 如下所示:

--outerboundary1

Content-Type: text/xml

Content-ID: <x.xml>

<?xml version="1.0"?>

<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.007/InvoiceDetail.dtd">

<cXML payloadID="za1saasxsx" timestamp="2003-04-04" xml:lang="en"><Header><From> 

... 

<Comments>These also use bluetooth<Attachment><URL>cid:[email protected] /cdn-cgi/l/email-protection</URL></Attachment></Comments>

...

</Request></cXML>

--outerboundary1

Content-type: text/plain; charset=US-ASCII

Content-Disposition: attachment; filename=PremiereCatalog.xxx

Content-Length: 4

Content-ID: <[email protected] /cdn-cgi/l/email-protection>

xxxx

--outerboundary1-- 

我知道如果没有什么帮助,这可能会非常令人沮丧。所以让我知道您是否需要对我有用的完整代码。

Pravin

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 MIME 编码的附件发布到 Ariba Supply Network 时出现问题 的相关文章

随机推荐