【问题标题】:NSURLRequest, why does craigslist return a 404?NSURLRequest,为什么 craigslist 返回 404?
【发布时间】:2010-10-01 23:36:42
【问题描述】:

我正在构建我的第一个 iPhone 应用程序,但遇到了困难。

我正在尝试构建一个 RSS 阅读器,并且我正在尝试使用来自 craigslist 的提要。此代码使用 stackoverflow 返回“状态代码:200”:

- (void)parseRSSFeed:(NSString *)feed withDelegate:(id)delegate
{
 responseData = [[NSMutableData data] retain];
 feed = @"http://stackoverflow.com";
 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:feed]];
 [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
 NSLog(@"status code: %d", [((NSHTTPURLResponse*) response) statusCode]);
 [responseData setLength:0];
}

一切都好。但是,如果我将提要更改为“http://portland.craigslist.org/muc/”,我会得到状态码 404。

我有什么遗漏吗? Craigslist 是否不允许 iPhone 访问其网站?我需要对 URL 进行转义吗?

带有 craigslist URL 的代码在这里。这和我使用的完全一样,它返回一个 404:

- (void)parseRSSFeed:(NSString *)feed withDelegate:(id)delegate
{
 responseData = [[NSMutableData data] retain];
 feed = @"http://portland.craigslist.org/muc/";
 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:feed]];
 [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
}

【问题讨论】:

    标签: objective-c nsurlrequest craigslist


    【解决方案1】:

    好的,我想通了。 Craigslist 正在阻止此请求。当您更改应用程序的名称时,相同的代码将起作用。例如,当应用名称包含字符串“craig”时,返回的响应代码为 404。当我将应用名称更改为不包含名称“craig”时,响应为 200。

    【讨论】:

      【解决方案2】:

      如果 User-Agent 标头包含字符串“craig”,Craigslist 会阻止 URL 请求。默认情况下,Apple 会将您的应用名称包含在 URL 请求的 User-Agent 标头中。要绕过这个障碍,请使用 NSMutableURLRequest 而不是 NSURLRequest 并伪造 User-Agent 标头:

      #define kUserAgentString @"Mozilla/5.0 (Windows; U; Windows NT 6.1; tr-TR) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27"
      
      NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL:theURL] autorelease];
      NSString *userAgent = kUserAgentString;
      [request setValue:userAgent forHTTPHeaderField:@"User-Agent"];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-07
        • 1970-01-01
        • 2018-04-01
        • 1970-01-01
        • 2023-01-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多