将cXML打孔机PunchOutOrderMessage发送回Ariba网站

时间:2018-09-16 03:22:08

标签: c# cxml sap-ariba

我正在努力使现有的小型网站与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网站并发布订单吗?

2 个答案:

答案 0 :(得分: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);
}

我的问题是如何处理他们的响应,这是一个简短的脚本(