【问题标题】:Sending cXML punch out PunchOutOrderMessage back to web site for Ariba将 cXML 冲出 PunchOutOrderMessage 发送回 Ariba 的网站
【发布时间】:2019-02-20 08:55:01
【问题描述】:

我正在努力使现有的小型网站与 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">

.... 等等

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

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

我尝试了以下方法:How to make HTTP POST web request 连接到 Web 服务器,但不确定如何处理该消息。我刚刚将它作为文本加载:

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 站点并发布订单?

【问题讨论】:

    标签: c# cxml sap-ariba


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      这对我有用(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 重定向到另一个页面的短脚本 (

      【讨论】:

        猜你喜欢
        • 2019-07-31
        • 1970-01-01
        • 1970-01-01
        • 2014-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-27
        相关资源
        最近更新 更多