Возникают проблемы с установкой заголовков в QNetworkRequest, не могу понять, почему - PullRequest
0 голосов
/ 20 февраля 2011

Вот функция / метод, который я использую.

bool NewAccountDialog::verifyAccount()
{
    QString loginURL = "https://accounts.craigslist.org/";
    QString USERAGENT = "Mozilla/Firefox 3.6.12";

    // This is all bullshit
    QNetworkAccessManager *manager = new QNetworkAccessManager(this);

    QNetworkRequest request;
    request.setUrl(loginURL);
    request.setRawHeader("User-Agent", USERAGENT);

    QByteArray data;
    QUrl params;

    params.addQueryItem("inputEmailHandle", accountName->text());
    params.addQueryItem("inputPassword", accountPass->text());
    data.append(params.toString());
    //No idea what this does
    data.remove(0,1);

    QNetworkReply *reply = manager->post(request,data);

    // Parse reply

    return 1;
}

Очевидно, что он неполон, но не компилируется, что приводит к ошибке при запуске request.setRawHeader () с жалобой на отсутствие функции, соответствующей моему вызову:

/home/brett/projects/CLPoster/CLPoster-build-desktop/../CLPoster/newaccountdialog.cpp:120: error: no matching function for call to ‘QNetworkRequest::setRawHeader(const char [11], QString&)’

Он принимает 2 QByteArrays в качестве параметров, и официальный пример даже передает ему две строки:

request.setRawHeader("Last-Modified", "Sun, 06 Nov 1994 08:49:37 GMT");

Не то чтобы это было важно, но я пробовал этои все равно получаю ту же ошибку.Мой Qt сломан?

1 Ответ

2 голосов
/ 20 февраля 2011

Проблема во втором параметре (USERAGENT).QByteArray может быть создан из массива char, но не из QString (см. Документацию QByteArray ).Вам нужно либо использовать QString :: toAscii () , QString :: toLatin1 () или что-то подобное, либо сделать USERAGENT символом *:

 const char* USERAGENT = "Mozilla/Firefox 3.6.12";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...