2

我正在尝试使用 Marmalade SDK 进行移动开发。我目前正在尝试使用 IwHTTP 完成各种任务。我已经能够在http://www.google.com URL 上复制我的特定问题。发生的情况是我的代码将输出“302 错误”页面的源代码,而不是标准的 Google 页面。这不是我的具体问题(即我不太关心谷歌),但这与另一个网站复制了我的问题。

我试图在网上寻找有关此问题的信息,但只发现与恶意软件相关的问题。我不认为这是使用图书馆的问题。这很可能是我对 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

1 回答 1

4

HTTP 代码 302 表示临时重定向。对于浏览器,这意味着您应该遵循重定向。重定向到的位置在 HTTP 响应标头中,为Location:.

如果要使用此重定向,则需要获取此标头并遵循它。

于 2013-05-09T02:52:18.687 回答