【问题标题】:NSURLConnection: I'm trying to receive html page, but always get error 403NSURLConnection:我正在尝试接收 html 页面,但总是收到错误 403
【发布时间】:2011-11-21 09:34:56
【问题描述】:

我想获取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

编辑2:

@Christophe Debove,你是对的。我将请求从 POST 更改为 GET 并收到 406 错误。当我删除“接受”标题时它开始工作。即使没有谷歌开发者密钥,它也能工作。

【问题讨论】:

  • HTTP 是 HTTP,如果它在浏览器中工作,并且如果您检查您的标头值,无论设备如何,它都必须工作,所以如果使用您的浏览器,您不需要谷歌开发者密钥,它是相同的。请注意,在来自同一 IP 的多个请求之后,如果您不使用 api 方式,一些 webapp 作为谷歌日历会询问您验证码。确保你的管子永远不会问你这个问题。

标签: ios nsurlconnection server-error


【解决方案1】:

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

HTTP code 403   Forbidden 

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

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

所以请用GET改方法

[request setHTTPMethod:@"GET"];

您可以删除一些标题值,即使它们不会导致 pb 无用。

【讨论】:

  • 我添加了标题,但对我没有帮助。问题只针对gdata.youtube.com/feeds/api/videos
  • 您是添加标题还是替换?你必须更换
  • 感谢您的帮助。我替换了标题,但我需要一个谷歌开发者密钥。我找到了code.google.com/apis/youtube/2.0/developers_guide_protocol.html
  • @Voloda,好的,太好了,您何时可以将您的解决方案作为答案添加给其他用户。
  • 我添加了谷歌开发者密钥,但问题仍然存在。当我找到解决方案时,我会发出信号。
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 2015-11-30
  • 2021-02-16
  • 1970-01-01
  • 2021-04-22
  • 2013-08-06
  • 2019-05-30
相关资源
最近更新 更多