2012-06-01 84 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

看起來這是一個服務器端問題。請驗證服務器要求的所有標題參數是否在請求中。