1

Web サービスからデータを取得する必要がある iPhone アプリケーションを作成しています。このサービスでは、同じ変数が複数の値を持つ可能性があり、この変数は [ ] ブラケットを使用してアクセスされます。(私は PHP 開発者ではありませんが、このスキームが PHP サービスでは珍しくないことは理解しています。)

したがって、サンプル リクエストは次のようになります。

example.com/service.php?id[]=1&id[]=2

URL を形成するために使用しているコードは次のようになります。

NSString *string = @"http://example.com/service.php?id[]=1&id[]=2";
NSURL *url = [NSURL URLWithString:string];
NSMutableURLRequest *networkRequest = [NSMutableURLRequest requestWithURL:url];
...

問題は、2 行目以降で URL が自動的にエンコードされるため、実際にアクセスしようとする URL は次のようになることです。

example.com/service.php?id%5B%5D=1&id%5B%5D=2

その結果、私のリクエストは必要な情報にアクセスできません。この Web サービスにアクセスできるように、NSURL が URL をエンコードしないようにする方法はありますか?

4

3 に答える 3

1

私の場合、サービス所有者との通信により、問題の原因となったサーバー上の異常な動作が明らかになりましたが、それは NSURL の文字列の処理に起因すると考えていました。申し訳ありませんが、ご回答いただきありがとうございます。

于 2011-02-03T06:14:48.063 に答える
0

私は自分のアプリケーションでそのような問題を抱えていました。URLを作成する前にURL文字列をエンコードすることで解決しました。だから私はあなたがこのようにする必要があると思います

NSString *string = @"http://example.com/service.php?id%5B%5D=1&id%5B%5D=2";
NSURL *url = [NSURL URLWithString:string];
NSMutableURLRequest *networkRequest = [NSMutableURLRequest requestWithURL:url];

詳細については、リンクを参照してください。

于 2011-02-02T07:31:53.310 に答える
0

おそらく単純にそれらをエスケープします:

NSString *string = @"http://example.com/service.php?id\[\]=1&id\[\]=2";

バックスラッシュも URL エンコードしてしまう可能性がありますが、試してみる価値はあります。

于 2011-02-02T07:35:47.190 に答える