1

我正在努力使现有的小型网站与 Ariba 打孔兼容。

我可以读取传入的设置,做出响应,然后将它们重定向到有效的登录回网站。

在 Ariba 打孔测试仪上,这一切都可以正常工作,并且可以将项目添加到购物车。

我正在尝试完成该过程并将 PunchOutOrderMessage 发送回购物车。

在 cXML 文档示例中,它具有以下格式:

<input type="hidden" name="cxml-urlencoded" value="<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd">

.... ETC

我已经配置了相同的消息,但为购物车打孔提供了正确的详细信息。

我不知道如何将其发送回 Ariba 站点。打孔提供了表单 POST URL,我应该将表单发送回。

我尝试了这里的方法:How to make HTTP POST web request to connect to the web server,但不确定如何处理该消息。我刚刚将它作为文本加载:

ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(ValidateRemoteCertificate);
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

var content = new StringContent(strPost);

var response = await client.PostAsync(PostURL, content);

var responseString = await response.Content.ReadAsStringAsync();

检查 ResponseString 只是提供了来自 Ariba 的完整网页,就好像我刚刚手动访问了该站点一样。

嵌入式浏览器只是在打孔网站上保持打开状态,不会去任何地方。

有没有人成功连接到 Ariba 站点并发布订单?

4

2 回答 2

1

PunchOutOrderMessage 文档应该被发送回 Ariba 客户端而不是服务器端。这可以通过将 cXML 放在 a 的隐藏输入字段中<form>并使用 JavaScript 提交表单来完成。此外,请确保 cXML 在输入字段的值中是 HTML 转义的。

可以在此处找到此案例的示例 HTML/JavaScript:https ://punchoutcommerce.com/guides/punchout/cxml-punchout-order-message/#cart_transmission

于 2019-02-23T21:05:44.210 回答
0

我在寻找我自己关于此之后步骤的问题的答案时遇到了这个问题,但迟到总比没有好。

这对我有用(HOOK_URL 是 Ariba 提供的 URL) - 保留您的服务点管理器代码:

byte[] response = Encoding.ASCII.GetBytes(output);
var request = (HttpWebRequest)WebRequest.Create(poom.HOOK_URL);
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";

try
{
    request.GetRequestStream().Write(response, 0, response.Length);
}
catch (Exception ex)
{
    LogHelpers.Write(log, ex);
}

WebResponse webresponse = null;
try
{
    webresponse = request.GetResponse();
}
catch (Exception ex)
{
    LogHelpers.Write(log, ex);
}

我的问题是如何处理他们的响应,这是一个将 top.location.href 重定向到另一个页面的短脚本 (<script>) 块。问题是,它是一个相对 URL,因此它会尝试重定向到我网站上的那个 URL。所以我会继续搜索,但希望这对其他人有帮助。

于 2018-11-09T19:15:49.397 回答