2013-04-05 61 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