Я пытаюсь возиться с разработкой мобильных приложений с использованием Marmalade SDK. В настоящее время я пытаюсь выполнить различные задачи, используя IwHTTP. Я был в состоянии воспроизвести мою конкретную проблему на http://www.google.com URL. Что происходит, так это то, что мой код выведет исходный код страницы «Ошибка 302» вместо стандартной страницы Google. Это не моя конкретная проблема (т. Е. Мне наплевать на 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.
HTTP-код 302 означает временное перенаправление. Для браузера это означает, что вы должны следовать перенаправлению. Место для перенаправления находится в заголовке ответа HTTP как Location:
,
Если вы хотите использовать это перенаправление, вам нужно получить этот заголовок и следовать ему.
Других решений пока нет …