ASIHTTPRequest GET请求问题

时间:2012-06-01 11:25:53

标签: ios cocoa-touch ios4 xcode4.2 asihttprequest

我的要求是

    request_ = [[ASIFormDataRequest requestWithURL:requestUrl] retain];
    [request_ setDelegate:self];
    [request_ setRequestMethod:@"GET"];
    [request_ setTimeOutSeconds:HTTP_TIME_OUT];
    [request_ startAsynchronous];

但服务器的响应是

HTTP状态405 - 不支持请求方法“GET”。请求的资源不允许使用指定的HTTP方法(不支持请求方法'GET')。

请注意,即使是获取请求,网址也没有任何“GET”参数。问题是,当我在浏览器中获取请求URL或者使用“HttpRequester”(一个用于测试http请求的Firefox插件来调用它)时,我从服务器得到了正确的响应 - 我确定你知道这一点)。可能出了什么问题?

提前致谢。

巴鲁

4 个答案:

答案 0 :(得分:2)

对于GET次请求,请使用ASIHTTPRequest

ASIFormDataRequest适用于POST次请求。

但是,如果您只需要一个简单的GET请求,为什么还要烦恼ASI呢?您可以在dispatch_async块中执行此操作:

dispatch_async(<some_queue>, ^{ 

    NSError  * error = nil;
    NSString * response = [NSString stringWithContentsOfURL: stringWithContentsOfURL: requestUrl error: &error];

    [self performSelectorOnMainThread: @selector(processResult:) withObject: response waitUntilDone: NO];
});

答案 1 :(得分:1)

解决了它。这是因为在已经发出的请求中缺少头参数“Accept”。一旦添加,一切都像魅力一样。 还用ASIHTTPRequest替换了ASIFormDataRequest(那是一个愚蠢的错误)。

答案 2 :(得分:1)

似乎是服务器端问题。请验证服务器所需的所有标头参数是否都在请求中。

答案 3 :(得分:0)

为什么要创建ASIFormDataRequest又称POSTRequest并将RequestMethod设置为GET? 如果您想要进行GET请求,请使用ASIHTTPRequest