AFNetworking 2.0은 GET 요청에 헤더 추가
방금 AFNetworking 2.0을 사용하기 시작했고 HTTP Get 요청에 헤더를 넣는 방법이 궁금합니다. 문서는 다음과 같이 GET을 설정합니다.
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"foo": @"bar"};
[manager POST:@"http://example.com/resources.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
그러나 우리가 처리하지 않기 때문에 NSURLRequests
HTTP 헤더를 설정하는 방법을 잘 모르겠습니다.
어떤 도움을 주시면 감사하겠습니다.
감사합니다,
Mike
AFNetworking 2.0에 대한 환상적인 문서는 이것을 찾기가 조금 어렵지만 거기에 있습니다. 에 AFHTTPRequestSerializer
입니다 -setValue:forHTTPHeaderField:
.
또는, 세션 관리자를 생성하는 권장 접근 방식을 따르는 경우 AFHTTPSessionManager
해당 클래스는 각 요청에서 헤더를 수정하는 메서드를 재정의 할 수 있습니다 -dataTaskWithRequest:completionHandler:
. 나는 이것을 사용하여 요청을 검사하고 사례별로 헤더를 수정하고 해당 관리자에 포함 된 네트워킹에 대한 책임을 유지하므로 직렬 변환기를 수정하는 것을 선호합니다 (단일 항목을 사용하지 않음).
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLResponse *, id, NSError *))completionHandler
{
static NSString *deviceId;
if(!deviceId)
{
deviceId = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
}
NSMutableURLRequest *req = (NSMutableURLRequest *)request;
// Give each request a unique ID for tracing
NSString *reqId = [NSString stringWithFormat:@"%@+%@", deviceId, [[NSUUID UUID] UUIDString] ];
[req setValue:reqId forHTTPHeaderField:"x-myapp-requestId"];
return [super dataTaskWithRequest:req completionHandler:completionHandler];
}
다음은 AFNetworking 2.0을 사용한 예입니다.
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:@"calvinAndHobbesRock" forHTTPHeaderField:@"X-I do what I want"];
[manager GET:@"http://localhost:3000" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
핵심은 다음 두 줄입니다.
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:@"calvinAndHobbessRock" forHTTPHeaderField:@"X-I-do-what-I-want"];
응답 및 요청 직렬 변환기를 추가하면 내 문제가 해결되었습니다.
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
이 양식을 사용하여 특정 헤더로 약속을 잡았습니다.
AFHTTPRequestOperationManager *operationManager = [AFHTTPRequestOperationManager manager];
[operationManager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[operationManager.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[operationManager POST:url
parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
success(responseObject);
}
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", [error description]);
}
];
여기에 제가 최선의 선택이라고 생각하는 것이 있습니다. 싱글 톤 어딘가에서를 AFHTTPSessionManager
사용하여 구성한 NSURLSessionConfiguration
다음 AFHTTPSessionManager
요청할 때마다 사용하십시오 .
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
config.HTTPAdditionalHeaders = @{@"Accepts": @"application/json"};
mySingletonSessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:kMyBaseUrl] sessionConfiguration:config];
I did this...for those that are passing token
[manager.requestSerializer setValue:[NSString stringWithFormat:@"Token token=\"%@\"", _userObj.oAuth] forHTTPHeaderField:@"Authorization"];
Use the following code to put any type of header value:
[[FRHTTPReqManager sharedManager].requestSerializer setValue:value forHTTPHeaderField:key];
참고URL : https://stackoverflow.com/questions/19466291/afnetworking-2-0-add-headers-to-get-request
'programing tip' 카테고리의 다른 글
여러 sudo 및 su 명령을 통해 원래 사용자를 어떻게 찾습니까? (0) | 2020.10.12 |
---|---|
IntelliJ 및 Android Studio에서 Eclipse의 Ctrl + 1 (0) | 2020.10.12 |
설치된 라이브러리 양식을 삭제하는 방법 네이티브 프로젝트 반응 (0) | 2020.10.11 |
동적 너비 (CSS)가있는 중앙 고정 div (0) | 2020.10.11 |
프로젝트 링크가 Wamp 서버에서 작동하지 않습니다. (0) | 2020.10.11 |