2012-07-13 60 views
1

我正在創建一個消耗json web服務的iPhone應用程序。我有用於從web服務加載JSON數據的NSURLRequest和NSURLConnection的對象:iOS NSURLConnection對象始終返回相同的響應


    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] 
            initWithURL:url 
            cachePolicy:NSURLRequestReloadIgnoringLocalCacheData 
            timeoutInterval:30]; 
    [request setHTTPMethod: @"POST"]; 
    //[request setHTTPShouldHandleCookies:YES];

//create connection 
NSURLConnection *connection = [[NSURLConnection alloc] 
           initWithRequest:request delegate:self]; 
[connection start]; 

我第一次執行上面的代碼,使用作爲URL「admin.mydomain.com/param1/value1/param2/value2「,響應正確傳遞(一個JSON字符串:{」錯誤的API密鑰「})。

然後我將url更改爲我的登臺服務器:「admin.stg.mydomain.com/param1/value1/param2/value2」。這個服務器爲我提供了一些完全不同的輸出(當我在瀏覽器中嘗試新的url時,顯示了正確的輸出,與第一個url完全不同的json對象),但在我的iphone應用程序中,我從另一臺服務器得到同樣的迴應。如果我嘗試不存在的網址,我會收到正確的錯誤消息。

它似乎已經緩存了原始服務器的結果,併爲我的stg子域返回相同的值,不知何故匹配兩個網址(這可能嗎?),但我已清除了所有可找到的緩存數據。我試圖清理構建和構建目錄,重新啓動xcode,計算機和所有內容,緩存策略設置爲忽略緩存(請參閱代碼)。重要提示:我在我的實際iPhone上獲得了相同的行爲,而不僅僅是模擬器。

有沒有人有任何想法可能會導致這種行爲?我忘了一些明顯的東西嗎?

我一直在尋找這個小時結束現在,任何幫助非常感謝!

+0

您是否嘗試過記錄您的url.description並將其放入瀏覽器? – RileyE 2012-07-13 19:09:58

+1

完整的URL創建代碼是什麼樣的? – 2012-07-13 19:15:04

+0

這可能是DNS問題還是使用不同虛擬主機的結果?嘗試檢查您的ios模擬器或設備瀏覽器中的兩臺服務器,以確保該設備的連接與您的開發環境使用相同的DNS。 – 2012-07-13 19:23:12

回答

1

我已經將請求方法更改爲'GET',現在我得到了預期的結果!在瀏覽器中檢查URL時,會使用get請求,發佈時會得到不同的響應,這恰好與我在dev服務器上獲得的響應完全相同。問題解決了,只需對後端進行一些調整即可發佈帖子請求!