0

iPhone アプリから Web ページにログインしようとしています。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 を返しますが、認証は完了しません。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 に答える