我正在编写一个需要从Web服务获取数据的iPhone应用程序。在此服务中,同一变量可能具有多个值,并且使用[]括号访问此变量。 (我不是PHP开发人员,但我知道这种方案对于PHP服务来说并不罕见。)
示例请求可能如下所示:
example.com/service.php?id [] = 1和ID [] = 2
我用来形成网址的代码如下所示:
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服务?
答案 0 :(得分:1)
就我而言,事实证明与服务所有者的通信显示导致问题的服务器上的不正常行为,但我将其归因于NSURL对字符串的处理。我道歉,谢谢你的回复。
答案 1 :(得分: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];
请参阅link了解更多ifno。
答案 2 :(得分:0)
也许只是逃避它们:
NSString *string = @"http://example.com/service.php?id\[\]=1&id\[\]=2";
它可能最终也会对反斜杠进行URLEncoding,但它值得一试。