您的位置:首页 > 编程语言 > Qt开发

QT下,基于位置服务能力平台(LBS)的API测试

2017-03-22 16:22 597 查看
M6311是中国移动自主研发的GSM模组,支持贴片SIM卡,具有小尺寸、低功耗、抗干扰能力强的特点,可向电力、石油、水务、燃气、金融等行业的远程无线抄表行业客户提供可靠的M2M通信功能。同时M6311还支持java虚拟机,客户可以在M6311上通过调用提供的接口函数,进行应用开发,实现非常丰富的功能。



位置定位能力服务(Location Based Service,简称LBS)一般应用于手机用户、终端用户,基于位置的服务,通过运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息,为用户提供相应服务的一种增值业务。作为物联网应用的一项重要辅助功能,LBS能弥补GPS无法覆盖的地区,提供给用户更方便快捷的定位服务。目前中移物联网LBS提供基站定位接口、混合定位接口、地图纠偏接口。

(登录网站 http://lbs.heclouds.com/ ,注册后获取APIKEY,调用API时会用到该APIKEY,用于鉴权)
测试APIKEY: XXXXXXXXXXXXXXXXXX

http://lbs.heclouds.com/api/process.jsp上可以看到关于API接口的函数

在此我仅测试了关于基站定位接口的方式,别的可以自行测试

基站定位接口:http://lbs.heclouds.com/api/gsmlbs.jsp ,

传递参数和返回信息如图

报文形式:
GET http://api.lbs.heclouds.com/api/gsmlbs?mcc=460&mnc=0&cell=30071&lac=13153&apikey=KEY 
HTTP/1.1
Host: api.lbs.heclouds.com

混合定位接口: http://lbs.heclouds.com/api/lbs.jsp ,下图为参数说明

在qt内的使用代码如下

.h文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QNetworkAccessManager>
#include <QFile>
#include <QDebug>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
Q_OBJECT

public:
explicit Widget(QWidget *parent = 0);
~Widget();

private:
Ui::Widget *ui;

QFile *file;
QNetworkAccessManager *accessManager;
QNetworkRequest *request;
QNetworkReply *reply;

void httpDownload();
private slots:
void replyFinished(QNetworkReply *reply);
};

#endif // WIDGET_H


.c文件

#include "widget.h"
#include "ui_widget.h"
#include <QUrl>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QByteArray>

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
httpDownload();
}

Widget::~Widget()
{
delete ui;
if (request)
delete request;
}

void Widget::httpDownload(){
QString tmp = "http://api.lbs.heclouds.com/api/gsmlbs?mcc=460&mnc=0&cell=30071&lac=13153&apikey=你的APIKEY";  //基站定位接口模式
//QString tmp = "http://api.lbs.heclouds.com/api/lbs?celltowers=[{\"mcc\":\"460\",\"mnc\":\"0\",\"lac\":\"13153\",\"cell\":\"30231\"}]&type=0&apikey=你的APIKEY";//混合定位接口
QUrl url(tmp);
accessManager=new QNetworkAccessManager(this);
request = new QNetworkRequest(url);
connect(accessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
reply = accessManager->get(*request);

// qDebug() << reply;
}

void Widget::replyFinished(QNetworkReply *reply){

QString re = QString(reply->readAll());

//  qDebug()<< reply->readAll();

ui->textBrowser->setText(re);

reply->deleteLater();//要删除reply,但是不能在repyfinished里直接delete,要调用deletelater;

}


这里使用的get方式来获取,也可以用post方式,要注意的是,在用混合方式的时候由于有很多地方需要在字符串中使用转义字符\,所以要注意

post方式需要设置setHeader,然后还有格式上要注意,具体的区别自己百度吧。

运行如下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐