【问题标题】:Having trouble setting headers in a QNetworkRequest在 QNetworkRequest 中设置标头时遇到问题
【发布时间】:2011-02-20 15:41:42
【问题描述】:

我正在使用以下函数进行发布请求:

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: 错误:没有匹配的调用函数 QNetworkRequest::setRawHeader(const char [11], QString&)

它需要2个QByteArrays作为参数,官方的例子甚至传了两个字符串:

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

这并不重要,但我已经尝试过了,但仍然遇到同样的错误。我的 Qt 坏了吗?

【问题讨论】:

    标签: c++ qt networking qt4


    【解决方案1】:

    问题出在第二个参数(USERAGENT)。 QByteArray 可以从 char 数组构造,但不能从 QString 构造(参见 QByteArray's documentation)。您需要使用QString::toAscii()QString::toLatin1() 或类似的东西,或者将USERAGENT 设为char*

     const char* USERAGENT = "Mozilla/Firefox 3.6.12";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 2021-06-19
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多