2013-04-05 29 views
3

开始研究iOS并需要Restful网络,所以我正在寻找AFNetworking。我已经遵循了一些很好的示例,并且我认为我了解如何使用它,但构建的请求没有预期的URL。 在AFHTTPClient requestWithMethod路径参数的方法,AFNetworking不建立正确的URL?

po urlBase 
$0 = 0x003b23b8 https://mysite.com/developer/api 
(lldb) po url 
$1 = 0x1eddf140 /users/current -- https://mysite.com/developer/api/ 
(lldb) po request 
$2 = 0x1ed50580 <NSMutableURLRequest https://mysite.com/users/current> 

的显影剂部分得到剥离出于某种原因。

我见过一些例子,其中传递到getPath方法的相对路径字符串有一个前导斜杠,因此可以预期基本URL不会有斜线,但我已经看到了一些示例, 。

我的基本URL变种是

NSString *const ServiceUrlBaseProduction = @"https://mysite.com/developer/api/"; 

和相对路径来获取当前用户

@"https://stackoverflow.com/users/current"; 
+0

为什么你包含相对路径的前导斜杠? – 2013-04-05 14:57:24

回答

5

这是因为AFHTTPSessionManager对URL的解释。在AFHTTPSessionManager.hhere中有解释如何正确编写您的网址。我相信你会希望得到当前用户的路径users/current而不是(没有引导斜杠)

+0

是的,所以即使我离开底部网址的尾部斜线,该网址将无论如何,如果我离开关闭我的相对路径的主要斜杠,URL适当地构建。确切地说, – topwik 2013-04-05 14:58:15

+0

。我同意这是令人困惑的行为 – 2013-04-05 15:29:15

+0

该链接现在是404,我认为AFHTTPClient.h不再存在。有关如何编写URL的说明,请参阅[AFHTTPSessionManager.h]的源代码(https://github.com/AFNetworking/AFNetworking/blob/master/AFNetworking/AFHTTPSessionManager.h),虽然 – 2015-08-01 09:18:15

0

尝试使用NSURL:

NSURL *url = [NSURL URLWithString:@"https://mysite.com/developer/api/"]; 

然后:

[NSURL URLWithString:@"users/current" relativeToURL:url]; 
+0

我正在尝试构建一个从AFHTTPClient继承的客户端。我的init使用NSURL来初始化自己。 [self = [super initWithBaseURL:[NSURL URLwithString:[[self class] urlBase]]] ... – topwik 2013-04-05 15:00:46