использование PHP cURL в переполнении стека

Как я мог воспроизвести такую ​​функцию в C ++ с помощью библиотеки BlackBerry Native?

$username="admin";
$password="admin";
$url="http://www.yourdomain.com/";
$cookie="cookie.txt";

$postdata = "log=". $username ."&pwd=". $password ."&wp-submit=Log%20In&redirect_to=".
$url ."wp-admin/&testcookie=1";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url . "wp-login.php");
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url . "wp-admin/");
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
echo $result;
exit;

Запрос в Native Library BlackBerry обычно выглядит следующим образом:

QNetworkAccessManager* networkAccessManager = new QNetworkAccessManager(this);

const QString queryUri = QString::fromLatin1("http://website.com/get.php?email=%1").arg(email);

QNetworkRequest request(queryUri);

QNetworkReply* reply = networkAccessManager->get(request);

Любая информация или точка в правильном направлении была бы удивительной!

0

Решение

Libcurl доступно на BB10, и это уже в SDK. Не забудьте добавить LIBS += -lcurl на ваш .pro файл

Там много Примеры на их сайте. Сохранить для некоторых опции это должно хорошо переводиться из вашего кода PHP, это должно выглядеть почти так тот.

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
CURL *curl;
CURLcode res;

curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
/* example.com is redirected, so we tell libcurl to follow redirection */
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);

/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));

/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}

Несколько предметов:

  • Керл ожидает необработанные данные. QStrings скрывает все вещи низкого уровня. Ожидайте боль при преобразовании данных в char*, Сделайте тест с данными по стране.
  • Это C, сделай свою домашнюю работу и пойми, что является дружественным к потоку, а что нет, пойми, кто отвечает за уборку.
  • QNetworkAccessManager и его друзья используют совершенно другой API, который является асинхронным. Ожидайте невероятно больше боли, чем при работе libcurl. Хотя есть некоторые преимущества:
    • Эти API реализуют очередь, так что вы можете запускать неограниченное (например, тысячи) количество задач, и Qt / BB10 будет регулировать запросы, чтобы вы не теряли связь, групповой запрос хостов для экономии накладных расходов,…
    • Эти API-интерфейсы ориентированы на мобильные устройства: хотите ли вы передавать, если 3G или лучше, нет передачи на сотовый? Они могут это сделать.
    • Это родной Qt API. Поработайте с libcurl, вы поймете.
0

Другие решения

Других решений пока нет …