Google.Com上的Http GET请求返回“错误302页面已被移动”

时间:2013-05-09 01:14:24

标签: c++ http visual-c++ mobile marmalade

我正在尝试使用Marmalade SDK搞乱移动开发。我目前正在尝试使用IwHTTP完成各种任务。我能够在http://www.google.com网址上复制我的特定问题。会发生什么是我的代码将输出“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的测试代码。

1 个答案:

答案 0 :(得分:4)

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

如果您想使用此重定向,则需要获取此标题并关注它。