0

我正在尝试通过 iPhone 应用程序登录网页。我尝试同时使用 ASIFormDataRequest 和 NSURLConnection 但无法成功完成登录过程。下面是 HTML 表单代码和我的 iOS 代码:

<form action="login.chi">
<div id="login">
<div id="login-form">
<table>
<tr>
  <td>Username</td>
  <td><INPUT NAME="username" VALUE=""></td>
</tr>
<tr>
  <td>Password</td>
  <td><INPUT NAME="password" VALUE="" TYPE="password"></td>
</tr>
<tr>
  <td colspan="2" nowrap align="center">
    <input type="submit" name="button" value="Login">
  </td>
</tr>
</table>
</div>
</div></form>

我的应用程序代码:

NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.com/login.chi"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"test" forKey:@"username"];
[request setPostValue:@"test" forKey:@"password"];

[request startSynchronous];

它发布数据并返回 HTTP 状态代码 = 200,但未完成身份验证。我用wireshark 看看POST 是否正确,看起来是否正确。请告知我所缺少的..谢谢..

更新:

我更仔细地查看了 wireshark 捕获的内容,发现它登陆了一个中间页面,该页面包含需要发送以进行成功身份验证的 URL 信息。响应如下所示:

<html><head>
  <meta http-equiv="refresh" content="0;url=http://ip_address:port/login?username=test&response=588ba0bd013e5f4873b46ff96e165e4a&userurl=http://www.google.org/"/>
</head></html>

元标记中的内容包含我需要连接以完成身份验证的“url”。通常浏览器会自动执行此操作,但我无法理解如何在应用程序中处理。我应该解析响应字符串并从中提取 url 吗?这是要走的路吗?请建议..

4

1 回答 1

0

您的表单正在发布到,login.chi但您的 Objective-C 代码正在发布到/login. 您需要正确的完整路径。

于 2012-08-15T20:29:30.800 回答