您好我正在尝试从另一个域执行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代码也没关系。
答案 0 :(得分:0)
在HTML表单中,您有一个名为 APILOGIN 的输入字段,但是当您在代码中创建postData字符串时,您可以将其命名为 apiuser