【问题标题】:ASIHTTPRequest GET Request IssueASIHTTPRequest GET 请求问题
【发布时间】:2012-06-06 15:22:54
【问题描述】:

我的要求是

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

提前致谢。

巴鲁

【问题讨论】:

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


    【解决方案1】:

    对于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];
    });
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          似乎是服务器端的问题。请验证请求中是否有服务器要求的所有header参数。

          【讨论】:

            猜你喜欢
            • 2021-10-20
            • 2011-06-12
            • 2012-04-11
            • 2012-07-10
            • 1970-01-01
            • 2014-03-27
            • 2013-07-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多