C#代码
Response.Clear();
string postbackUrl = "https://payeer.com/ajax/api/api.php";
string account = "620913";
string orderid = "77777";
string amount = Convert.ToDecimal(IncreaseUSDtxb.Text).ToString("N2");
string units = "USD";
string key = "test1";
StringBuilder sb = new StringBuilder();
sb.Append("<html>");
sb.AppendFormat(@"<body onload='document.forms[""form""].submit()'>");
sb.AppendFormat("<form name='form' action='{0}' method='post'>", postbackUrl);
sb.AppendFormat("<input type='hidden' name='m_shop' value='{0}'>", account);
sb.AppendFormat("<input type='hidden' name='m_orderid' value='{0}'>", orderid);
sb.AppendFormat("<input type='hidden' name='m_amount' value='{0}'>", amount);
sb.AppendFormat("<input type='hidden' name='m_curr' value='{0}'>", units);
sb.AppendFormat("<input type='hidden' name='m_key' value='{0}'>", key);
sb.Append("</form>");
sb.Append("</body>");
sb.Append("</html>");
Response.Write(sb.ToString());
Response.End();
通常此代码允许我将数据发布到第三方网站,将用户重定向到他们并使用以下内容检索答案:
System.Collections.Specialized.NameValueCollection ReadForm = Request.Form;
yourvariable == ReadForm["requestedcolumn"]
当我在postbackUrl中使用“.asp”页面作为要发布的url时,这种情况没有错误。 但是,在这种情况下,上面的代码会导致下载api.php,虽然我可以在我的浏览器中打开https://payeer.com/ajax/api/api.php,当然没有问题。
如何克服此代码下载.php页面而不是重定向到它的问题?
更新:已解决。显然,出于某种原因,如果您在PostBackUrl中指定了其他正确格式的链接或没有“www”的表单操作,则在这种情况下,特别是“.php”资源下载,而不是重定向到包含“www”的情况。 / p>
我还不确定帖子操作是否会在我将更新的代码中正常工作,尽管它应该在非PHP第三方资源的情况下正常工作。
答案 0 :(得分:0)
为了说明我如何对网站进行数据POST,用户登录在请求和请求2之间保存:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.website.net/login.php");
request.Method = "POST";
request.CookieContainer = new CookieContainer();
byte[] query = Encoding.UTF8.GetBytes("uid=login&pwd=password");
request.ContentLength = query.Length;
request.ContentType = "application/x-www-form-urlencoded";
using (Stream stream = request.GetRequestStream())
{
stream.Write(query,0, query.Length);
}
var response = request.GetResponse();
var str = new StreamReader(response.GetResponseStream()).ReadToEnd();
HttpWebRequest request2 = (HttpWebRequest)HttpWebRequest.Create("http://www.website.net/index.php");
request2.Method = "GET";
request2.CookieContainer = request.CookieContainer;//<-pass cookies
var response2 = request2.GetResponse();
var str2 = new StreamReader(response2.GetResponseStream()).ReadToEnd();