NSURLConnection:我试图接收html页面,但总是得到错误403
问题描述:
我想获取html页面并解析它。NSURLConnection:我试图接收html页面,但总是得到错误403
我送http://gdata.youtube.com/feeds/api/videos?q=u_dAYLIG984
NSURL* url = [NSURL URLWithString: fullPath];
NSMutableDictionary* headers = [[[NSMutableDictionary alloc] init] autorelease];
[headers setValue:@"application/x-www-form-urlencoded;charset=utf-8" forKey:@"Content-Type"];
[headers setValue:@"text/html" forKey:@"Accept"];
[headers setValue:@"no-cache" forKey:@"Cache-Control"];
[headers setValue:@"no-cache" forKey:@"Pragma"];
[headers setValue:@"close" forKey:@"Connection"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:TIMEOUT_REQUEST];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
conn = [[NSURLConnection alloc] initWithRequest:request delegate:delegate startImmediately:YES];
我总是得到403错误。哪里不对 ?
编辑:
我试过http://bbc.co.uk/我的请求,而且运作良好。我的问题只与http://gdata.youtube.com/feeds/api/videos?q=u_dAYLIG984
EDITED2:
@Christophe Debove,你是对的。我将POST请求更改为GET,并收到406错误。当我删除“Accept”标题时它变得有效。即使没有谷歌开发者密钥,它也能工作
答
它似乎服务器禁止你。当您忘记传递安全参数或者某些标题值错误时,可能会发生这种情况。
HTTP code 403 Forbidden
我尝试发送请求与LiveHTTPHeader的Firefox模块。 我看到YouTube的API不接受POST请求,但只有GET。
当我与POST
方法送我得到403 forbiden Target feed is read-only
所以请您用GET
[request setHTTPMethod:@"GET"];
你可以删除你的一些报头值的方法,即使他们不会导致PB有无用。
HTTP是HTTP如果它在浏览器中工作,并且如果你检查你的标题值,它必须工作,无论设备,所以如果你的浏览器,你不需要谷歌开发关键是一样的。请注意一些webapp作为谷歌日历问你一个验证码,如果你不使用API的方式,在多个请求从相同的IP后。确保你的管子永远不会问你。 –