我是 AFNetworking 的新手,我正在尝试使用它来与我用 Go 编写的 API 对话。我很难让 Authorization 标头工作。我已经子类化了 AFHTTPSessionManager 并将其配置如下
+ (HMAPIClient *)sharedHMAPIClient
{
static HMAPIClient* _sharedHMAPIClient = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedHMAPIClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:HMBaseURL]];
});
return _sharedHMAPIClient;
}
- (instancetype)initWithBaseURL:(NSURL *)url
{
self = [super initWithBaseURL:url];
if (self) {
self.responseSerializer = [AFJSONResponseSerializer serializer];
self.requestSerializer = [AFJSONRequestSerializer serializer];
[self.requestSerializer setAuthorizationHeaderFieldWithUsername:RegistrationAPIKey
password:@"Doesn't matter what goes here."];
}
return self;
}
- (void)hitTestEndpoint
{
[self GET:@"testEndpoint" parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"%@", responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"%@", error);
}];
}
当我调用 -(void)hitTestEndpoint 时,我在服务器日志中看到以下标头(缺少授权):
Key: Accept-Encoding Value: [gzip, deflate]
Key: Connection Value: [keep-alive]
Key: Accept-Language Value: [en;q=1]
Key: User-Agent Value: [TestApp/2 (iPad Simulator; iOS 8.1; Scale/2.00)]
Key: Accept Value: [*/*]
为了进行比较,当我使用以下 curl 命令到达相同的端点时,
curl https://api.example.com/v1/testEndpoint/ -u test_xqzwjcasogptbnpa:
我看到以下标题:
Key: Authorization Value: [Basic eHF6d2pjYXNvZ3B0Ym5wYTo=]
Key: User-Agent Value: [curl/7.30.0]
Key: Accept Value: [*/*]
有人可以指出我正确的方向吗?-谢谢
更新: 我添加了 AFNetworkActivityLogger 以便我可以看到每个请求。确实包含了 Authorization 标头。此外,我尝试点击http://headers.jsontest.com,它返回从客户端收到的 HTTP 请求标头。授权头是存在于该输出。
所以,问题一定出在我的服务器上。我已经记录了每个请求的所有标头,但我不确定还能在哪里查看。要用 Go 标记这个问题,看看是否有人有想法。
繁花不似锦
相关分类