C++网络请求(get,post,上传图片)与QML混合编程
文章主要分两个大模块:C++模块和qml模块;包含了Qt下网络请求QNetworkAccessManager,QNetworkRequest,QNetworkReply类库,以及响应机制:信号与槽,同时还兼容了QML与C++信息的传递以及数据类型的转换;本人刚学QT不到一个月且第一次写文章给大家分享,如有不好的地方欢迎大家留言给出宝贵的意见。好了,啰嗦了半天,接着就看正文吧:
- get实现
- post实现
- 上传图片
- 获取网络返回结果并传递结果给qml
- qml与C++传递过程的数据转换
- qml使用C++网络类
get实现
这里两个参数其实分别是手机号码和请求接口名
RequestBaseStr_REGIST为宏定义请求接口地址
void CCNetWorkRequest::CCRequest_GET(QString param, QString interfaStr)
{
requestURL_Str = RequestBaseStr_REGIST;
requestURL_Str.append(interfaStr);
requestURL_Str.append(param);
qDebug()<<"req_url:"<<requestURL_Str;
//此处为返回给qml界面其所发出的请求信息(主要便于测试验证请求参数是否正确)
emit reqParamsReturn(requestURL_Str);
_netWorkRequest.setUrl(QUrl(requestURL_Str));
//通过manager直接调用get方法将request传递过去就可以了!
_netWorkManager->get(_netWorkRequest);
}
post实现
这里设计时第一个参数为qml传递过来的所需请求所有参数的json字符,第二个参数同上,接口名称
void CCNetWorkRequest::CCRequest_POST(QString param, QString interfaStr)
{
requestURL_Str = RequestBaseStr_REGIST;
requestURL_Str.append(interfaStr);
//这里主要将qml传递过来的json转换为请求data
transData = CCQmlStrToByteArray(param);
//校验传递的参数是否正确
if(transData.isNull())
{
emit reqErrorReturn("请求参数错误!")