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];
...

问题是,在第二行之后,URL 被自动编码,因此 URL 真正尝试访问看起来像这样:

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

结果,我的请求无法访问我想要的信息。有没有办法阻止 NSURL 对我的 URL 进行编码,以便它可以访问此 Web 服务?

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];

请参阅链接以获取更多 ifno。

于 2011-02-02T07:31:53.310 回答
0

也许只是逃避他们:

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

它也可能最终只是对反斜杠进行 URLEncoding,但值得一试。

于 2011-02-02T07:35:47.190 回答