获取HttpWebResponse后重定向

时间:2014-01-24 04:10:02

标签: c# asp.net vb.net httpwebrequest httpwebresponse

您好我正在尝试从另一个域执行PHP自动登录API,该域接受来自POST的登录详细信息。

我使用一个简单的PHP测试了api,它使用下面的代码通过post方法发送参数,并成功重定向到登录的网站。

<html>
<body>
<form action="http://anotherdomain.com/index.php" method="POST">
Username: <input type="text" name="user" value="testuser" hidden><br>
Password: <input type="text" name="passw" value="hashedpassword"><br>
API Login: <input type="text" name="apiuser" value="apiuser"><br>
API PASS: <input type="text" name="apiuser" value="apipass"><br>
<input type="submit" value="Autologin">
</form>
</body>
</html>

现在我想在后面的代码上执行此操作。我已尝试过以下代码但未能重定向。

        string sAPIUser = "apiuser";
        string sAPIPassword = "apipass";
        string sURL = "http://anotherdomain.com/index.php";
        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(sURL);
        string hashPassword = tbPassword.Text.Trim();

        string postData = "user=" + tbUserName.Text.Trim().ToUpper() + "&passw=" + hashPassword + "&apiuser=" + sAPIUser + "&apipass=" + sAPIPassword;

        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        webRequest.Method = "POST";
        webRequest.ContentType = "application/x-www-form-urlencoded";
        webRequest.ContentLength = byteArray.Length;
        webRequest.AllowAutoRedirect = true;
        Stream dataStream = webRequest.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
        HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
        dataStream = webResponse.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        string sResponse = reader.ReadToEnd();
        reader.Close();
        webResponse.Close();

        //when displayed to label displays HTML code from site successfully logged in
        lMessage.Text = sResponse;

当我在HTML Visualizer上阅读sResponse时,它显示用户已成功登录,但是当我添加“Response.Redirect(sURL);”时它重定向到网站但没有登录。如何在获得响应之后自动重定向页面,如上面的PHP代码。请帮忙。谢谢。 vb.net代码也没关系。

1 个答案:

答案 0 :(得分:0)

在HTML表单中,您有一个名为 APILOGIN 的输入字段,但是当您在代码中创建postData字符串时,您可以将其命名为 apiuser