我的要求是
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插件来调用它)时,我从服务器得到了正确的响应 - 我确定你知道这一点)。可能出了什么问题?
提前致谢。
巴鲁
答案 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
。