Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HTTP POST从代码c后面重定向#_C#_Asp.net_Http Post - Fatal编程技术网

C# HTTP POST从代码c后面重定向#

C# HTTP POST从代码c后面重定向#,c#,asp.net,http-post,C#,Asp.net,Http Post,上面是我用来将数据发布到银行网站以进行信用卡处理的示例代码。它的工作很好,但我需要做这背后的代码,而不是。我尝试了WebClient()和HttpClient(),它们都只经过数据,不重定向浏览器(除非我没有正确编码)。这似乎并没有将用户重定向到银行网站。这可能吗?如果是,我如何才能做到这一点? PS:抱歉,我不熟悉将POST数据粘贴到外部URL。您必须打开连接并通过WebClient发布您的值。记住webclient只是一个包装器。为了简单起见,我只添加了两个参数,一个是空的(x_login)

上面是我用来将数据发布到银行网站以进行信用卡处理的示例代码。它的工作很好,但我需要做这背后的代码,而不是。我尝试了WebClient()和HttpClient(),它们都只经过数据,不重定向浏览器(除非我没有正确编码)。这似乎并没有将用户重定向到银行网站。这可能吗?如果是,我如何才能做到这一点?
PS:抱歉,我不熟悉将POST数据粘贴到外部URL。

您必须打开连接并通过WebClient发布您的值。记住webclient只是一个包装器。为了简单起见,我只添加了两个参数,一个是空的(x_login),另一个是带值的。必须包含密钥才能序列化和发布


您必须打开连接并通过WebClient发布您的值。记住webclient只是一个包装器。为了简单起见,我只添加了两个参数,一个是空的(x_login),另一个是带值的。必须包含密钥才能序列化和发布



看看这个@itsme86,他在向银行提交数据时有一个非常常见的测试代码。他需要把它转换成程序化的POST,没有UI。这是正确的。这是一个测试代码。我需要在没有UI的情况下以编程方式进行操作。第一条注释有一个链接,指向如何以编程方式进行操作的大量示例,您需要的所有内容都应该在其中。我实现了HttpClient()和WebClient(),但它们都没有将我重定向到POST URL。我需要客户端浏览器转到POST URL,因为它将解析这些值并将其显示在允许他们输入信用卡信息的签出页面中。如果你能指出我可能做错了什么,我将不胜感激。他需要把它转换成程序化的POST,没有UI。这是正确的。这是一个测试代码。我需要在没有UI的情况下以编程方式进行操作。第一条注释有一个链接,指向如何以编程方式进行操作的大量示例,您需要的所有内容都应该在其中。我实现了HttpClient()和WebClient(),但它们都没有将我重定向到POST URL。我需要客户端浏览器转到POST URL,因为它将解析这些值并将其显示在允许他们输入信用卡信息的签出页面中。如果您能指出我可能做错了什么,我将不胜感激。快速提问,我是否能够添加相同的字符串名称两次。我需要遍历一个列表,并为x_line_项发出多个字符串值。那可能吗?我可以创建一个foreach循环来添加多个x\u行\u项吗。银行需要多个行项目字符串键,而不是一个。要求添加(“x行项目”,评估(“说明”);当然,这是没有限制的。事实上,您将发布一个元素数组,这是非常正常的。根据它们的处理方式,可能会有一些限制,但我认为如果您已经收到添加N个相同类型元素的要求,那么它会起作用。我尝试过,我不能在NameValueCollection中添加多个x_line_项。它可以看到x_line_项已经存在,并通过逗号分隔的方式追加新的键值。这就是NameValueCollection处理该项的方式。您可以自己尝试添加两个或多个值,您将看到浏览器将其转换为完全相同的csv列表。我读了很多书,但我似乎无法把它连接起来,它通过了动作URL的POST数据,同时把我带到了那个动作URL。我只能将回复发回我自己的网页。我需要它的工作方式是,通过一个按钮使用post动词发布一些订单详细信息,然后它会将用户重定向到post页面,在那里他们可以输入信用卡进行支付。快速提问,我是否可以添加相同的字符串名两次。我需要遍历一个列表,并为x_line_项发出多个字符串值。那可能吗?我可以创建一个foreach循环来添加多个x\u行\u项吗。银行需要多个行项目字符串键,而不是一个。要求添加(“x行项目”,评估(“说明”);当然,这是没有限制的。事实上,您将发布一个元素数组,这是非常正常的。根据它们的处理方式,可能会有一些限制,但我认为如果您已经收到添加N个相同类型元素的要求,那么它会起作用。我尝试过,我不能在NameValueCollection中添加多个x_line_项。它可以看到x_line_项已经存在,并通过逗号分隔的方式追加新的键值。这就是NameValueCollection处理该项的方式。您可以自己尝试添加两个或多个值,您将看到浏览器将其转换为完全相同的csv列表。我读了很多书,但我似乎无法把它连接起来,它通过了动作URL的POST数据,同时把我带到了那个动作URL。我只能将回复发回我自己的网页。我需要它的工作方式是,通过一个按钮使用post动词发布一些订单详细信息,然后它会将用户重定向到post页面,在那里他们可以输入信用卡进行支付。
<form action="https://demo.bank.com/payment" method="post">
<input name="x_login" type="hidden" runat="server" id="x_login" />
<input name="x_amount" type="hidden" runat="server" id="x_amount" />
<input name="x_fp_sequence" type="hidden" runat="server" id="x_fp_sequence" />
<input name="x_fp_timestamp" type="hidden" runat="server" id="x_fp_timestamp" />
<input name="x_fp_hash" type="hidden" runat="server" id="x_fp_hash" />
<input name="x_show_form" type="hidden" runat="server" id="x_show_form" />
<input name="x_line_item" value="<%# Eval("Desc") %>" type="hidden" />
<input type="submit" name="submit" value="Submit" class="btn_confirm" />
</form>
<input name="x_login" type="hidden" runat="server" id="x_login" />
<input name="x_line_item**" value="<%# Eval("Desc") %>" type="hidden" />
using(WebClient client = new WebClient())
{
    var reqparm = new System.Collections.Specialized.NameValueCollection();
    reqparm.Add("x_login", ""); // You're sending the key with en empty value
    reqparm.Add("x_line_item", Eval("Desc") );
    byte[] responsebytes = client.UploadValues("https://demo.bank.com/payment", "POST", reqparm);
    string responsebody = Encoding.UTF8.GetString(responsebytes);
}