跪求中国帅哥gv钙片资源<RAW1><RAW2>完整版!!!

热推内容 &行星边际2&激战视频-[...
方式一:扫一扫
支持各类二维码扫描软件
方式二:发一发
免费发送App到手机
看不清验证码不正确
该短信不收取任何费用
方式三:下一下
下载App观看
还有更多攻略和游戏礼包等着你
嵌入代码:
这个支持手机播放哦
专区热点·
大家都在看
手机看视频
测试状态:(公测)
点评:探索乐趣与跳跳乐的巧妙结合
安静的东方曼曼
一只野生的懒羊羊
马上就有人鱼线的PDD
歌神洞庭湖丶
文森特丶v1ncent打开微信扫一扫
孔网客户端
安卓版苹果版扫描下载
当前位置: &
中西部特邀在沪画展之一户县农民画敏生画二幅&&集市归来&&&&柿子红了&&尺寸55x40cm
滚动鼠标滚轴,图片即可轻松放大、缩小
中西部特邀在沪画展之一户县农民画敏生画二幅&&集市归来&&&&柿子红了&&尺寸55x40cm(图1)
中西部特邀在沪画展之一户县农民画敏生画二幅&&集市归来&&&&柿子红了&&尺寸55x40cm(图2)
中西部特邀在沪画展之一户县农民画敏生画二幅&&集市归来&&&&柿子红了&&尺寸55x40cm(图3)
中西部特邀在沪画展之一户县农民画敏生画二幅&&集市归来&&&&柿子红了&&尺寸55x40cm(图4)
中西部特邀在沪画展之一户县农民画敏生画二幅&&集市归来&&&&柿子红了&&尺寸55x40cm(图5)
电&&&&&&话:
开&&&&&&本:
页&&&&&&数:
字&&&&&&数:
I&&S&&B&&N:
售&&&&&&价:150.00元
Copyright(C)
孔夫子旧书网
京ICP证041501号
海淀分局备案编号
购物车共有0件商品,合计:0.00元今天看啥 热点:
【Qt编程】基于Qt的词典开发系列&八&--用户登录及API调用的实现,qtapi
在上一篇文章《调用网络API》中,我只讲述了如何直观的使用API接口以及调用API后返回的结果,本文则从程序实现的角度来实现API的调用,当然本程序的实现也是借助于扇贝网的API接口文档/help/developer/api/。
由API文档可知,要想调用其API,必须先注册。因此,我就注册了,账户名为nineheadedbird, 密码为123456。显然,我们要查词,首先必须得登录该账户。如果用浏览器,那就很简单,只需单纯的输入用户名和密码就可以了。可实际上,这一操作并不简单,只是浏览器为我们做了这一切。如果我们要通过程序来实现上述功能的话,就需要用到Qt中的get()函数了,而发送请求的内容格式就至关重要了。
查看请求格式
我们可以通过浏览器来查看请求格式:首先用谷歌浏览器(其他浏览器也可以,不过你要百度一下怎么来查看这些格式)打开扇贝网的登录界面/accounts/login/ ,在谷歌浏览器的设置中单击开发者选项,然后刷新一下页眉,就会出现如下的界面:
然后点击右边的第一个文件login,就会出现下面的内容:
从上图可以看出,内容分为三类:General、Response Headers、Request Headers
在General中可以看到Request Method为GET(一般还有另一种方式POST,这在Qt中都有对应的函数),Status Code为200表示正常。在Response Headers 中我们关注的是Set-Cookie中的csrftoken的值,因为这在我们登录时需要这个值。我们最关心的是Request Headers的内容,这部分就是我们请求函数中内容格式!参考上述的具体内容如下:
我们的程序可以写成如下的方式:
QNetworkRequest request;
request.setUrl(QUrl("/accounts/login/"));
request.setRawHeader("Accept","text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8");
request.setRawHeader("Accept-Language","zh-CN,q=0.8");
request.setRawHeader("Cache-Control","max-age=0");
request.setRawHeader("Connection","keep-alive");
request.setRawHeader("Host","");
request.setRawHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7");
http-&get(request);
当我们执行上述的请求之后,服务器就会作答,作答的内容就是上面的Response Headers,而我们需要的是Set-Cookie中的csrftoken的值。在Qt中,我们将程序中finished信号与我们定义的槽关联,即每当网络应答结束时,都会发射这个信号,从而触发该槽函数的执行,来处理服务器的应答内容。在程序中,getCookie函数就是来获取csrftoken的值。
获得csrftoken的值后,我们就需要实现登录操作了。除了上述的请求格式之外,我们还需要加入csrftoken的值、用户名以及密码。具体格式可见下述代码:
QNetworkRequest request
request.setRawHeader("Accept","text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8")
request.setRawHeader("Accept-Language","zh-CN,q=0.8")
request.setRawHeader("Cache-Control","max-age=0")
request.setRawHeader("Connection","keep-alive")
request.setRawHeader("Host","")
request.setRawHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7")
request.setRawHeader("Origin","http//")
request.setRawHeader("Referer","/accounts/login/")
request.setRawHeader("Host","")
request.setRawHeader("Content-Type","application/x-www-form-urlencoded")
QByteArray postData
postData.append(QString("csrfmiddlewaretoken=%1&").arg(sessionid))
postData.append(QString("username=%1&password=%2&").arg(QUrl::toPercentEncoding(username).constData()).arg(password))
postData.append("login=登录&continue=home&u=1&next=")
request.setHeader(QNetworkRequest::ContentLengthHeader,postData.size())
httpAction=LoginAction
http-&post(request,postData)
完成登录之后,就可以进行查词和添词操作了。除了上述提到的请求头格式之外,只需要遵守API规范(《调用网络API》中提到请求格式)即可。查词及添词的程序实现分别如下:
void netWork::queryWord(const QString &word)//查词操作
QNetworkRequest request
request.setUrl(QUrl("/api/word/"+word))
request.setRawHeader("Accept","text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8")
request.setRawHeader("Accept-Charset","GBK,utf-8;q=0.7,*;q=0.3")
request.setRawHeader("Accept-Language","zh-CN,q=0.8")
request.setRawHeader("Cache-Control","max-age=0")
request.setRawHeader("Connection","keep-alive")
request.setRawHeader("Host","")
request.setRawHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7")
httpAction=QueryWordAction
http-&get(request)
void netWork::addWord(const QString &word)//添词操作
if(word.isEmpty())
qDebug()&&"你的输入有误"
QNetworkRequest request
request.setUrl(QUrl("/api/learning/add/"+word))
request.setRawHeader("Accept","text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8")
request.setRawHeader("Accept-Charset","GBK,utf-8;q=0.7,*;q=0.3")
request.setRawHeader("Accept-Language","zh-CN,q=0.8")
request.setRawHeader("Cache-Control","max-age=0")
request.setRawHeader("Connection","keep-alive")
request.setRawHeader("Host","")
request.setRawHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7")
httpAction=AddWordAction
http-&get(request)
至此,API调用的各个功能已经实现,下面给出程序的整体思路:首先获取csrftoken的值(每次都不同);然后利用用户名、密码及csrftoken的值来登录;接着就可以调用API了。在程序中,每当进行请求,都会在replyfinished函数中用case语句来分别处理这些请求对应的应答。注意,不要连续的进行请求,否则可能发生冲突。在程序中,为了防止冲突,我在connectNet请求后,在其应答处理函数中再进行loginShanbay的登录,然后在其应答函数中进行queryWord查词请求,然后在其对应的应答处理函数中进行addWord添词请求。其结果显示如下:
下面我们给出具体的程序实现(qt 5版本,使用到网络类,需要加上QT += network):首先建立一个空的qt子项目,然后添加一个名为netWork的类,继承自QObject,然后再添加一个名为main的源文件,这三个文件的内容分别如下:
1、network.h文件
#ifndef NETWORK_H
#define NETWORK_H
#include &QObject&
#include &QtNetwork/QNetworkAccessManager&
#include&QtNetwork/QNetworkReply&
#include&QtNetwork/QNetworkRequest&
#include&QtNetwork/QNetworkCookie&
#include&QtNetwork/QNetworkCookieJar&
#include &QJsonDocument&
#include &QJsonObject&
#include &QJsonArray&
#include &QJsonValue&
#include&QString&
#include&QDebug&
#include&QList&
#include&QUrl&
#include&QByteArray&
class netWork : public QObject
explicit netWork(QObject *parent = 0);
enum HttpAction{NoAction,NetStudy,GetSessionidAction,LoginAction,QueryWordAction,AddWordAction,AddExampleAction,QueryWordExamplesAction};
HttpAction httpA
QNetworkAccessManager *
QString getCookie(const QString &name);
void loginShanbay();
void queryWord(const QString &word);
void queryExamples(QString learningid);
void connectNet(QString username="nineheadedbird", QString password="123456");
void addWord(const QString &word);
void connectSuccess();
void connectFail();
void verifySuccess();
void verifyFail();
void NetState(bool);
public slots:
void replyfinished(QNetworkReply*);
2、network.cpp文件
#include "network.h"
#include&QList&
#include&QDesktopServices&
netWork(QObject *parent) :
QObject(parent)
http=new QNetworkAccessManager(this);
http-&setCookieJar(new QNetworkCookieJar(this));
connect(http,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyfinished(QNetworkReply*)));
isBusy=true;
QString netWork(const QString &name)
foreach(QNetworkCookie cookie , http-&cookieJar()-&cookiesForUrl(QUrl("/")))
if(cookie.name()==name)
qDebug()&&"csrftoken:"&&cookie.value();
return cookie.value();
return "";
void netWork(QString username, QString password)
this-&username=
this-&password=
request.setUrl(QUrl("/accounts/login/"));
request.setRawHeader("Accept","text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8");
request.setRawHeader("Accept-Language","zh-CN,q=0.8");
request.setRawHeader("Cache-Control","max-age=0");
request.setRawHeader("Connection","keep-alive");
request.setRawHeader("Host","");
request.setRawHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7");
httpAction=GetSessionidA
http-&get(request);
void netWork(QNetworkReply *reply)
QVariant status_code=reply-&attribute(QNetworkRequest);
qDebug()&&"code_state="&&status_
if(status_code==QVariant)
emit NetState(false);
emit NetState(true);
switch(httpAction)
case NoAction:
case GetSessionidAction:
sessionid=getCookie("csrftoken");
if(!sessionid.isEmpty())
emit connectSuccess();
qDebug()&&("已经连接扇贝网,正在验证用户名密码...");
loginShanbay();
emit connectFail();
qDebug()&&("Cannot connect to the website!");
case LoginAction:
httpAction=NoA
if(0==reply-&readAll().size())
QString nickname=QUrl(getCookie("username").toLatin1());
emit verifySuccess();
qDebug()&&"Successfully Login"&&
queryWord("hello");
emit verifyFail();
qDebug()&&"Failed to login!";
case QueryWordAction:
qDebug()&&"----query word----";
qDebug()&&reply-&readAll();
addWord("hello");
case AddWordAction:
qDebug()&&"---add word----";
qDebug()&&reply-&readAll();
void netWork()
request.setUrl(QUrl("/accounts/login/"));
request.setRawHeader("Accept","text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8");
request.setRawHeader("Accept-Language","zh-CN,q=0.8");
request.setRawHeader("Cache-Control","max-age=0");
request.setRawHeader("Connection","keep-alive");
request.setRawHeader("Host","");
request.setRawHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7");
request.setRawHeader("Origin","http//");
request.setRawHeader("Referer","/accounts/login/");
request.setRawHeader("Host","");
request.setRawHeader("Content-Type","application/x-www-form-urlencoded");
QByteArray postD
postData.append(QString("csrfmiddlewaretoken=%1&").arg(sessionid));
postData.append(QString("username=%1&password=%2&").arg(QUrl(username).constData()).arg(password));
postData.append("login=登录&continue=home&u=1&next=");
request.setHeader(QNetworkRequest,postData.size());
httpAction=LoginA
http-&post(request,postData);
void netWork(const QString &word)
request.setUrl(QUrl("/api/word/"+word));
request.setRawHeader("Accept","text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8");
request.setRawHeader("Accept-Charset","GBK,utf-8;q=0.7,*;q=0.3");
request.setRawHeader("Accept-Language","zh-CN,q=0.8");
request.setRawHeader("Cache-Control","max-age=0");
request.setRawHeader("Connection","keep-alive");
request.setRawHeader("Host","");
request.setRawHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7");
httpAction=QueryWordA
http-&get(request);
void netWork(const QString &word)
if(word.isEmpty())
qDebug()&&"你的输入有误";
request.setUrl(QUrl("/api/learning/add/"+word));
request.setRawHeader("Accept","text/html,application/xhtml+xml,application/q=0.9,*/*;q=0.8");
request.setRawHeader("Accept-Charset","GBK,utf-8;q=0.7,*;q=0.3");
request.setRawHeader("Accept-Language","zh-CN,q=0.8");
request.setRawHeader("Cache-Control","max-age=0");
request.setRawHeader("Connection","keep-alive");
request.setRawHeader("Host","");
request.setRawHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7");
httpAction=AddWordA
http-&get(request);
3、main.cpp文件
#include &QApplication&
#include "network.h"
int main(int argc, char *argv[])
QApplication a(argc, argv);
netWork *nW = new netWork();
nW-&connectNet();
return a.exec();
基于Qt的词典开发系列
作品下载地址:http://download.csdn.net/detail/tengweitw/8548767
原文:http://blog.csdn.net/tengweitw/article/details/
作者:nineheadedbird
相关搜索:
相关阅读:
相关频道:
&&&&&&&&&&&&&&&&
WEB编程教程最近更新SD卡变RAW格式怎么恢复数据,请高手指点!!,谢谢_百度知道
SD卡变RAW格式怎么恢复数据,请高手指点!!,谢谢
想直接恢复,在卡上还看了一会照片;易我数据恢复向导V2,老爸老妈跑那么远转了一圈;&lt,我准备用读卡器转照片到电脑,提示插入磁盘,是数码相机用的!.1,用磁盘管理也不能格式化,双击打开!,细看格式变成RAW了,也以失败告终!;怎么办,想格了再恢复,刚插上还是好的,我爸爸妈妈去外地旅游回来,容量显示为0字节,怎么办,结果吃了过来,老婆喊吃饭,真是太遗憾了!求那位高手想想办法呀,下了几个软件同样不能格呀;EasyRecovery Professional&gt我一东芝SD卡!,就打不开了.用了&lt,郁闷急了.0&gt!,但右键不能格式化,一点照片都没留下,当儿子的感觉很对不起他们呀,就关了程序准备吃了饭来转
提问者采纳
如果右击分区,再单击“安全选项”:打开“我的电脑”。
提示:”列表框中的乱码删掉,在RAW格式的分区上点右键:首先进入“控制面板”并切换到经典视图: 第一步,在右面窗口中找到“网络访问,然后添加本机的用户即可,再双击打开“本地安全策略”,找到“管理工具”,依次点击“工具”-“文件夹选项”-“查看”,在弹出的属性对话框中没有“安全”标签的话,在弹出的属性对话框中找“安全”标签。
第二步再试试这种方式,将“组或用户名称,将“使用简单文件共享(推荐)”前面的对勾取消即可,单击“本地策略”前面的加号:本地帐户的共享和安全模式”项,可打开“我的电脑”,双击打开;&gt,然后将其后面的安全设置“仅来宾-本地用户以来宾身份认证”改为“经典-本地用户以自己的身份认证”。
查看原帖&gt,单击属性
其他类似问题
为您推荐:
raw格式的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁这道题如果用X&Y时和X&Y时D(X-Y)=D(Y-X)=1/2+1/2_百度知道
这道题如果用X&Y时和X&Y时D(X-Y)=D(Y-X)=1/2+1/2
Y时和X&lt。,Y相互独立;2+1&#47,求随机变量|X-Y|的方差,不太明白。;2的正态分布;Y时D(X-Y)=D(Y-X)=1&#47,且都服从均值为0。这道题如果用X&gt题目:设两个随机变量X;2=1错在哪了,方差为1&#47
提问者采纳
另解是令x-y=z,便可比较方便求得结果,两个区域积分,1)按照方差与期望值的公式运算由于x-y经过去绝对值号以后,再根据定义域,由独立可得联合概率密度函数.这是最原始的方法,计算方面就不能这样算了,x与y的独立性发生了变化;&gt,把第一象限按直接y=x分成两部分.可以写出各自的概率密度函数.
查看原帖&gt,可得z~(0
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 瑞舒伐他汀钙片 的文章

 

随机推荐