Я пытаюсь отправить запрос POST на определенный URL-адрес через прокси-сервер. Чтобы проверить, что код, который я пишу, работает, я установил squidman на свою машину и запустил прокси-сервер на порт 33074 . Я протестировал прокси-сервер, изменив настройки сети, чтобы использовать прокси-сервер при выполнении запросов HTTP / HTTPS, и он работает нормально.
Теперь я написал следующий код:
NSDictionary* proxyConfig = @{
(NSString*) kCFNetworkProxiesHTTPSEnable: @(1),
(NSString*) kCFNetworkProxiesHTTPSProxy: @"127.0.0.1",
(NSString*) kCFNetworkProxiesHTTPSPort: @"33074",
};
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
[sessionConfig setTimeoutIntervalForRequest:60];
[sessionConfig setConnectionProxyDictionary:proxyConfig];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"https://the-host-where-im-posting"]];
[request setHTTPMethod:@"POST"];
[request setValue:[[NSString alloc] initWithFormat:@"%lu",length] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:data];
NSURLSession *session = [self createHttpSession];
NSURLSessionDataTask* dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
if(httpResponse.statusCode == 200){
//...
} else {
LOGERROR(@"Error: %@", error);
}
}
Проблема в том, что запрос не был выполнен успешно, и в журнале регистрируется следующая ошибка:
Ошибка: Ошибка Domain = kCFErrorDomainCFNetwork Code = 310 "(null)" UserInfo = {_ kCFStreamErrorCodeKey = -2096, _kCFStreamErrorDomainKey = 4}
Дополнительная информация:
1. Следует отметить, что запросы отправляются без необходимости установки словаря proxyConfig
.
2. Похожая ошибка сообщается, если я пытаюсь отправить запрос, используя HTTP через прокси (соответственно изменяя ключи в словаре proxyConfig
) с небольшим различием в коде ошибки и _kCFStreamErrorCodeKey: 306 вместо 310 и -2094 вместо -2096.
3. Процесс, выполняющий запрос, запускается как демон.
Что именно я делаю не так? Чего мне не хватает?