AF Networking 2.0 GET 요청에 헤더 추가
저는 방금 AF네트워킹 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 헤더를 설정하는 방법을 잘 모르겠습니다.
어떤 도움이라도 주시면 감사하겠습니다.
안부 전해요,
마이크
다음은 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"];
AFNetworking 2.0에 대한 환상적인 문서는 이것을 찾기가 조금 어렵지만, 실제로 있습니다.에서AFHTTPRequestSerializer
입니다.
또는 세션 관리자를 생성하는 권장 접근 방식을 따르는 경우 다음을 수행합니다.AFHTTPSessionManager
그러면 해당 클래스가 각 요청의 헤더를 수정하는 메서드를 재정의할 수 있습니다.저는 이를 사용하여 요청을 검사하고 사례별로 헤더를 수정하며, 해당 관리자에 포함된 네트워킹에 대한 책임을 유지하기 때문에 시리얼라이저를 수정하는 것을 선호합니다(싱글톤과의 충돌을 피함).
- (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];
}
응답 및 직렬화 요청을 추가하여 문제를 해결했습니다.
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];
내가 한 짓은...토큰을 전달하는 사람들을 위해.
[manager.requestSerializer setValue:[NSString stringWithFormat:@"Token token=\"%@\"", _userObj.oAuth] forHTTPHeaderField:@"Authorization"];
다음 코드를 사용하여 모든 유형의 헤더 값을 입력합니다.
[[FRHTTPReqManager sharedManager].requestSerializer setValue:value forHTTPHeaderField:key];
언급URL : https://stackoverflow.com/questions/19466291/afnetworking-2-0-add-headers-to-get-request
'programing' 카테고리의 다른 글
SQL에서 여러 파티션을 선택하는 방법은 무엇입니까? (0) | 2023.08.01 |
---|---|
Python 피클 오류:유니코드 디코딩 오류 (0) | 2023.07.27 |
순차적인 월별 리드를 SQL의 열로 계산하시겠습니까? (0) | 2023.07.27 |
각진 5개의 재료 - 180도에서 고착된 폼 필드 (0) | 2023.07.27 |
Xcode 대상 배포 대상 대 프로젝트 배포 대상 (0) | 2023.07.27 |