2014-03-26 156 views
1

我想使用AFNetworking類到我的應用程序與服務器進行通信。如何添加AFNetworking的請求標頭?

我對這個圖書館不熟悉。這裏是我的代碼:

NSDictionary *user=[[NSDictionary alloc]initWithObjectsAndKeys:@"hiteshp",@"userName",@"12345^",@"password", nil]; 
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
AFHTTPRequestSerializer *requestSerializer = [AFHTTPRequestSerializer serializer]; 
[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
manager.requestSerializer=requestSerializer; //[AFJSONRequestSerializer serializer]; 
[manager POST:@"myURL" parameters:user success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"JSON: %@ %@", responseObject); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
}]; 

我想爲此請求添加標題。我試過了,但沒有奏效。如果我寫了註釋行然後請求已完成,但我也想添加一個字段「授權」來請求。 打印請求標題?

回答

4

使用此代碼中的:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"application/json", nil]; 

//Authorization  
[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:userName password:password]; 
0
在php文件中添加

header('Content-type: application/json');

在Xcode: manager.responseSerializer = [AFJSONResponseSerializer serializer];

例子的Xcode代碼:

NSDictionary *parameters = @{@"key1": @"value1", 
          @"key2": @"value2"}; 

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 

    manager.responseSerializer = [AFJSONResponseSerializer serializer]; 

    [manager POST:[NSString stringWithFormat:@"http://%@", Url] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"JSON: %@", responseObject); 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error); 

    }]; 
+0

剛讀我的問題,我是問有關如何添加字段請求頭什麼..... – vivek

+0

我認爲你有錯誤'「請求失敗:不可接受的內容類型:文本/ HTML」',如果是的話,那麼這個解決方案可以幫助你。當然,服務器的響應以Json格式發送,如'json_encode($ response)'。如果沒有,對不起。 – waki

6

我知道它太遲了,但這裏有一個代碼,讓你想

NSString *finalyToken = [[NSString alloc]initWithFormat:@"Bearer %@",user.token]; 
AFHTTPRequestOperationManager *manager = 
[[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"https://server1.appscserver.de/api"]]; 
[manager.requestSerializer setValue:finalyToken forHTTPHeaderField:@"Authorization"]; 

希望它可以幫助別人

+0

感謝您答覆joan..I現在有了AFNetworking的豐富經驗。 – vivek

+0

@vivek我也試圖發送授權承載頭,但沒有工作.. 401 Unathorized。我認爲'[manager.requestSerializer setValue:finalyToken forHTTPHeaderField:@「Authorization」];'不是設置Auth的正確方法。 header – Nil

+0

@Nil它一直爲我工作,也許標題字段的名稱是不同的,在我現在工作的項目上,它被稱爲「X-Auth」。 「授權」是最常見的一種,但請確保您使用的是正確的。 –