Qt--post请求及解析响应代码规范

以登陆账号发送post请求为例

post请求:

   QUrl url(serverUrl);  //https://192.168.1.101
    url.setPath(url.path() + kApiLoginUrl); //https://192.168.1.101/api2/auth-token/
 
    //qDebug("Login to %s\n", url.toString().toUtf8().data());
    QNetworkRequest request(url);
 
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
    // form post params
    QUrl params;
    params.addQueryItem("username", username); //&username=username?password=password
    params.addQueryItem("password", password);
 
    //current_login_account_.serverUrl = serverUrl;
    //current_login_account_.username = username;

 
    //QNetworkReply = QNetworkAccessManager->post(...);
 
    current_login_request_ = network_access_mgr_->post(request, params.encodedQuery());
    // ignore ssl error
    current_login_request_->ignoreSslErrors();
 
    connect(current_login_request_, SIGNAL(finished()), this, SLOT(loginRequestFinished()));


json解析响应:

if (current_login_request_->error() != QNetworkReply::NoError) {
        qDebug("failed to send login request:%s\n",
                 current_login_request_->errorString().toUtf8().data());
        emit accountLoginFailed();
        return;
    }
 
    int code = current_login_request_->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
    if (code != 200) {
        qDebug("failed to login: status code %d\n", code);
        emit accountLoginFailed();
    }
 
    QByteArray raw = current_login_request_->readAll();
    json_error_t error;
    json_t *root = json_loads(raw.data(), 0, &error);
    if (!root) {
        qDebug("failed to parse json:%s\n", error.text);
        emit accountLoginFailed();
        return;
    }
 
    const char *token = json_string_value(json_object_get (root, "token"));
    if (token == NULL) {
        qDebug("failed to parse json:%s\n", error.text);
        emit accountLoginFailed();
    }
 
    qDebug("login successful, token is %s\n", token);
    current_login_account_.token = token;
    emit accountLoginSuccess(current_login_account_);



                
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值