NSURLConnection:我正在尝试接收html页面,但总是得到错误403

时间:2011-11-21 09:34:56

标签: ios nsurlconnection server-error

我想获取html页面并解析它。

我发送给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错误。当我删除"接受"头。即使没有谷歌开发人员密钥也可以。

1 个答案:

答案 0 :(得分:1)

似乎服务器禁止你。当您忘记传递安全参数或者某些标头值出错时,可能会发生这种情况。

HTTP code 403   Forbidden 

我尝试使用LiveHTTPHeader firefox模块发送请求。 我看到youtube api不接受POST请求但只接受GET。

当我使用POST方法发送时,我得到403 forbiden Target feed is read-only

因此,请使用GET

更改方法
[request setHTTPMethod:@"GET"];

你可以删除一些标题值,即使它们没有导致pb没用也没用。