2012-06-01 59 views
2

我的要求是ASIHTTPRequest GET请求发行

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

但是,从服务器的响应是

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

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

在此先感谢。

巴鲁

回答

1

解决了它。这是因为在请求中没有头部参数“Accept”。一旦它被添加,一切都像魅力一样。 也用ASIHTTPRequest替换了ASIFormDataRequest(那是一个愚蠢的错误)。

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]; 
}); 
+0

+1快速抓住:) – rishi

0

为什么要创建ASIFormDataRequest aka POSTRequest并将RequestMethod设置为GET? 如果您想使用ASIHTTPRequest代替GET GET请求。

1

看起来这是一个服务器端问题。请验证服务器要求的所有标题参数是否在请求中。