NSURLSessionConfiguration не возвращает данные запроса URL

#ios #nsurlrequest #nsurlsessionconfiguration

#iOS #nsurlrequest #nsurlsessionconfiguration

Вопрос:

Я использую следующий код для установки настроек прокси в URLConfiguration.

 NSString *proxyHost = @"192.168.xx.xxx";
NSNumber *proxyPort = [NSNumber numberWithInteger:8090];
NSString *request = [NSString stringWithFormat:
                     @"http://example.com/sampleid?id=506"];

NSURL *URL = [NSURL URLWithString:
              [request stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];


NSURL *url = [NSURL URLWithString:[request stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

NSURLRequest *URLrequest = [NSURLRequest requestWithURL:url];

NSDictionary *proxyDict = @{
                            @"HTTPEnable"  : [NSNumber numberWithInt:1],
                            (NSString *)kCFStreamPropertyHTTPProxyHost  : proxyHost,
                            (NSString *)kCFStreamPropertyHTTPProxyPort  : proxyPort,
                            (NSString *)kCFProxyUsernameKey : hostUserName,
                            (NSString *)kCFProxyPasswordKey : hostPassword,

                            @"HTTPSEnable" : [NSNumber numberWithInt:1],
                            (NSString *)kCFStreamPropertyHTTPSProxyHost : proxyHost,
                            (NSString *)kCFStreamPropertyHTTPSProxyPort : proxyPort,
                            (NSString *)kCFProxyUsernameKey : hostUserName,
                            (NSString *)kCFProxyPasswordKey : hostPassword,
                            };

NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfig.connectionProxyDictionary = proxyDict;

NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: sessionConfig delegate: nil delegateQueue: [NSOperationQueue mainQueue]];

__block NSDictionary *returnJsonDictionary;
__block NSError *error1;

NSURLSessionDataTask *task = [defaultSession dataTaskWithRequest:URLrequest completionHandler:
                              ^(NSData *data, NSURLResponse *response, NSError *error) {
                                  NSLog(@"NSURLSession got the response [%@]", response);
                                  NSLog(@"NSURLSession got the data [%@]", data);
}];
[task resume];
  

Но эта строка кода ^(NSData *data, NSURLResponse *response, NSError *error) возвращает результаты my proxyHost с данными HTML вместо возврата данных URL (http://example.com/sampleid?id=506 )

Кто-нибудь может помочь мне решить эту проблему.

Заранее спасибо.

Ответ №1:

 sessionConfig.connectionProxyDictionary = proxyDict;
  

Попробуйте прокомментировать это и посмотреть, решит ли это вашу проблему. Из вашего ответа на мой комментарий «Изменить прокси» в моей теме кажется, что вы на самом деле не хотите подключаться через прокси. Также какова ценность

proxyHost
proxyPort

Комментарии:

1. Если я прокомментирую строку, которую вы сказали, тогда ответ будет в порядке. Но без этой строки вы не сможете установить для параметра прокси значение URLSessionConfiguration. И я обновил свой вопрос с proxyHost proxyPort помощью значений и

2. Похоже, что прокси-сервер ur является локальным IP-адресом, а не сервером, поэтому у него могут возникнуть проблемы. Попробуйте бесплатные прокси Google и попробуйте изменить ур proxyHost и proxyPort на другой.