2

我的要求是

    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”(用于测试 http 请求的 Firefox 插件)调用它时,我从服务器获得了正确的响应——我相信你知道)。可能出了什么问题?

提前致谢。

巴鲁

4

4 回答 4

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];
});
于 2012-06-01T11:29:01.897 回答
1

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

于 2012-06-01T11:29:14.143 回答
1

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

于 2012-06-13T12:34:20.333 回答
0

为什么要创建ASIFormDataRequest又名 POSTRequest 并将其设置RequestMethod为 GET?如果您想发出 GET 请求,请ASIHTTPRequest改用。

于 2012-06-01T11:29:18.330 回答