2013-05-09 62 views
2

我正在嘗試使用Marmalade SDK進行移動開發。我目前正在嘗試使用IwHTTP完成各種任務。我已經能夠在http://www.google.com網址上覆制我的特定問題。會發生什麼是我的代碼將輸出「302錯誤」頁面的源代碼,而不是標準的Google頁面。這不是我的具體問題(即我不太在乎Google),但是這會將我的問題複製到另一個網站。Google.Com上的http GET請求返回「錯誤302頁已被移動」

我試圖環顧網絡找到這個問題,但只發現與惡意軟件相關的問題。我不認爲這是使用圖書館的問題。這很可能是我對HTTP的缺乏理解,這讓我感到非常沮喪。這是導致此錯誤的簡短片段。

#include "s3e.h" 
#include "IwGx.h" 
#include "IwHTTP.h" 
#include <string> 

int32 rec = 0; 
CIwHTTP http; 
std::string output = ""; 
char buffer[1024]; 

int32 min(int32 a, int32 b) { return a > b ? b : a; } 

int32 http_get_callback(void* sys_data, void* user_data) { 
    if(http.ContentReceived() < http.ContentLength()) { 
     http.ReadData(buffer, min(1024, http.ContentLength() - http.ContentReceived())); 
     output += buffer; 
    } 
} 

int main() 
{ 
    IwGxInit(); 

    IwGxSetColClear(0, 0, 0xff, 0xff); 

    http.Get("https://www.google.com", http_get_callback, 0); 

    while(!s3eDeviceCheckQuitRequest() && 
      !s3eKeyboardGetState(s3eKeyEsc) & S3E_KEY_STATE_DOWN && 
      !s3eKeyboardGetState(s3eKeyAbsBSK) & S3E_KEY_STATE_DOWN) 
    { 
     IwGxClear(); 
     IwGxPrintString(5, 5, output.c_str()); 
     IwGxFlush(); 
     IwGxSwapBuffers(); 
     s3eDeviceYield(0); 
    } 
    IwGxTerminate(); 
    return 0; 
} 

我也試過變種(有或沒有SSL,與.com和.ca),我無法得到預期的輸出。

在這個問題上的任何指針?

編輯:我知道這段代碼很可怕,這只是測試代碼來學習SDK。

回答

4

HTTP代碼302表示臨時重定向。對於瀏覽器來說,這意味着你應該遵循重定向。重定向到的地方位於HTTP響應標頭Location:

如果你想使用這個重定向,你需要得到這個頭,並按照它。

+0

這很有道理。今晚我會試試這個。謝謝 ! – ApplePie 2013-05-09 11:28:47

+0

我標記爲答案。返回的標題「位置」確實指向不同的位置。我無法讓我的代碼工作,但這僅僅是因爲我對API的理解。我確定這是一個單獨的問題。謝謝 ! – ApplePie 2013-05-10 00:18:09