Насколько я вижу, это всего лишь ошибка в симуляторе консоли. Я написал реальный (Android) код приложения в соответствии с этими правилами и смог создать и удалить контент без проблем. Проблема в том, что симулятор не понимает, как интерпретировать request.resource == null
, и в результате просто терпит неудачу.
Я напишу отчет об ошибке для этого, но вы всегда должны проверять свои правила на соответствие реальному продукту, если что-то не имеет смысла, так как трудно полностью синхронизировать симулятор.
Это должно работать с NSMutableURLRequest, как записал Kuso.
NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: @"http://www.google.com/"]];
[urlRequest setValue: @"iPhone" forHTTPHeaderField: @"User-Agent"]; // Or any other User-Agent value.
необходимо будет использовать NSURLConnection для получения responseData. Установите responseData на свой UIWebView, и webView должен представить:
[webView loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL];
Вот предложение для проектов Swift 3+ от пользователей StackOverflow PassKit и Kheldar:
UserDefaults.standard.register(defaults: ["UserAgent" : "Custom Agent"])
Источник: https://stackoverflow.com/a/27330998/ 128579
С изменениями iOS 5 я рекомендую следующий подход, исходный из этого вопроса StackOverflow: UIWebView iOS5 с изменением агента пользователя , как указано в ответе ниже. В комментариях к этой странице, похоже, он работает и в 4.3 и более ранних версиях.
Измените значение "UserAgent" по умолчанию, запустив этот код один раз, когда ваше приложение запускается:
NSDictionary * dictionary = @ {@ "UserAgent": @ "Your user agent"}; [[NSUserDefaults standardUserDefaults] registerDefaults: словарь]; [[NSUserDefaults standardUserDefaults] синхронизировать];
См. Предыдущие правки в этом сообщении, если вам нужны методы, которые работают в версиях iOS до 4.3 / 5.0. Обратите внимание, что из-за обширных правок следующие комментарии / другие ответы на этой странице могут не иметь смысла. В конце концов, это вопрос четырехлетней давности. ; -)
Беру всё так, как было решено для меня:
- (void)viewDidLoad {
NSURL *url = [NSURL URLWithString: @"http://www.amazon.com"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setValue:@"Foobar/1.0" forHTTPHeaderField:@"User-Agent"];
[webView loadRequest:request];
}
Спасибо всем.
Использование @"User_Agent" просто вызывает появление пользовательского заголовка в GET-запросе.
User_agent: Foobar/1.0\r\n
User-Agent: Mozilla/5.0 (iPhone; U; CPU) iPhone OS 3_1_2 как Mac OS X; en-us) AppleWebKit/528.18 (KHTML, например Gecko) Mobile/7D11\r\n
Вышеуказанное появляется в препарированном HTTP-пакете, по сути, подтверждая то, что Sfjava цитировала с того форума. Интересно отметить, что "User-Agent" превращается в "User_agent"
.Это решение, кажется, было замечено как довольно умный способ сделать это
change-the-headers-for-uiwebkit-http-requests
Он использует метод Swizzling, а вы можете узнать больше об этом на странице CocoaDev
Взгляните!