我試圖使用類似to this post which describes doing a PUT/POST for RESTful API的模式,但是用於GET。如何用AFNetworking-2.0做一個JSON編碼的GET請求?
我的原始代碼看起來幾乎相同,除了我使用了GET:
關鍵字。我很快發現,不是發送JSON正文,而是通過url對參數進行編碼。這在AFJSONSerializer
類的文檔中沒有提及。您必須轉到超類文檔(AFHTTPSerializer
)並通讀其屬性,您會在其中找到the one about HTTPMethodsEncodingParametersInURI。默認情況下,該組用HEAD,GET和DELETE填充。那麼對於這些類型的請求,JSON序列化器顯然會回覆到其父類的行爲?
所以我總結了以下代碼:
AFHTTPSessionManager* manager = [AFHTTPSessionManager manager];
manager.securityPolicy.allowInvalidCertificates = YES;
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.requestSerializer.HTTPMethodsEncodingParametersInURI = [NSSet set];
[manager.requestSerializer setAuthorizationHeaderFieldWithUsername: currentUser() password: currentPassword()];
[manager
GET: @"https://172.16.214.214:44321/trees"
parameters: [NSDictionary dictionary]
success:^(NSURLSessionDataTask* task, id responseObject){
NSLog(@"Response: %@", responseObject);}
failure:^(NSURLSessionDataTask* task, NSError* error){
NSLog(@"Error: %@", error);}];
,設置HTTPMethodsEncodingParametersInURI = [NSSet set]
行的目的是,讓我得到JSON編碼參數,如我想的太。不幸的是,我什麼也看不到在服務器上時,我用這個,讓我在錯誤控制檯如下:
2013-12-10 10:11:14.149 myValve[957:60b] Error: Error Domain=NSURLErrorDomain Code=-1005 "The
network connection was lost." UserInfo=0x17e5d4b0
{NSErrorFailingURLStringKey=https://172.16.214.214:44321/trees,
NSErrorFailingURLKey=https://172.16.214.214:44321/trees, NSLocalizedDescription=The network
connection was lost., NSUnderlyingError=0x17e53240 "The network connection was lost."}
我是什麼人仍下落不明?
我希望這實際上是一個答案@Rob。該鏈接有助於明確爲什麼框架可能不支持它。謝謝。 –
我已經發布它作爲答案。我只是不想讓我看到別人的優秀答案。同樣,我總是猶豫發佈一個可以被解讀爲「不這樣做」的答案。大聲笑。 – Rob