我正在尝试使用 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 的测试代码。