Qt HTTP POST請求 (Json格式和Form格式) 訪問服務(wù)器
form格式訪問服務(wù)器
QByteArray?postArray; postArray.append("grant_type=authorization_code"); postArray.append("&client_id=32u2w95f200D4d27"); postArray.append("&client_secret=37vH35Eg028P2HZz"); postArray.append("&redirect_uri=http://www.163.com"); postArray.append("&code=128a55c1249ebf3ef9d154b72a5386d4"); QNetworkRequest?request(QUrl("http://kk.bigk2.com:8080/KOAuthDemeter/accessToken")); request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded"); request.setHeader(QNetworkRequest::ContentLengthHeader,postArray.size()); manager->post(request,postArray);
json格式訪問服務(wù)器
?QUrl?url("http://kk.bigk2.com:8080/KOAuthDemeter/User/getKSceneList"); QByteArray?array("{"userid":"1538822184@qq.com"}"); QNetworkRequest?request(url); request.setHeader(QNetworkRequest::ContentTypeHeader,QVariant("application/json")); request.setRawHeader("Authorization","Bearer?49152bfddae0c5b5d492d3d9871f8c11");//服務(wù)器要求的數(shù)據(jù)頭部 manager->post(request,array);
HTTP訪問服務(wù)器
使用HTTP訪問服務(wù)器,需要向服務(wù)器發(fā)送服務(wù)器可以接受的數(shù)據(jù)包格式。?
開始:一個(gè)以太網(wǎng)數(shù)據(jù)包的格式為:標(biāo)頭(Head)和數(shù)據(jù)(Data)。標(biāo)頭中包含發(fā)送者,接受者,以及數(shù)據(jù)類型等內(nèi)容。發(fā)送者和接受者在一些高級類中已經(jīng)自動(dòng)封裝。我們要做的就是設(shè)置數(shù)據(jù)類型。通過設(shè)置正確的數(shù)據(jù)類型,然后將數(shù)據(jù)發(fā)送出去.簡單的說:我需要發(fā)送一個(gè)數(shù)據(jù)包給服務(wù)器。首先確定服務(wù)器接受數(shù)據(jù)的類型為“application/x-www-form-urlencoded”,因此我設(shè)置頭部的數(shù)據(jù)類型為“application/x-www-form-urlencoded”,然后在組裝數(shù)據(jù)。結(jié)果一個(gè)數(shù)據(jù)包就完成了。頭部+數(shù)據(jù) = 一個(gè)完整的數(shù)據(jù)包。接下來簡單的介紹一些HTTP概念
資源:web服務(wù)器是web資源(Web resource)的宿主。Web資源是Web內(nèi)容的源頭MIME類型:Web服務(wù)器為所有HTTP對象數(shù)據(jù)附加一個(gè)MIME( Multipurpose Internet Mail Extension 多用途以太網(wǎng)郵件擴(kuò)展)類型,上面的“application/x-www-form-urlencoded”就是一個(gè)MIME類型。最初設(shè)計(jì)使用為了解決在不同的電子郵件系統(tǒng)之間搬移報(bào)文存在的問題。MIME類型是一種文件標(biāo)記,表示一種主要的對象類型和一個(gè)特定的子類型,中間有一條斜杠來分隔。例如:上面我們用到的“application/x-www-form-urlencoded”URI:服務(wù)器資源名稱為統(tǒng)一資源標(biāo)示符(Uniform Resource Identifier,URI)。URI用兩種形式,分別為URL和URN。URL:統(tǒng)一資源定位符(URL)是資源標(biāo)示符中最常見的形式。URL藐視了一臺特定服務(wù)器上某個(gè)資源的特定位置。大部分URL遵循一種標(biāo)準(zhǔn)的格式,這種格式包含三個(gè)部分:?
URL的第一部分稱為方案(scheme),說明了訪問資源所使用的協(xié)議類型。這部分通常使用HTTP(Hypertext Transfer Protocol )協(xié)議(“http:/”),另外還有HTTPS(Hypertext Transfer Protocol Secure)協(xié)議。第二部分給出了服務(wù)器的因特網(wǎng)地址(例如,?https://zh.wikipedia.org)其余部分給定了Web服務(wù)器上的某個(gè)資源(例如:/wiki/Cookie)URN:URI的第二種形式就是統(tǒng)一資源名(URN)。使用較少,不做討論。事務(wù):一條HTTP事務(wù)由一條請求服務(wù)器命令和服務(wù)器響應(yīng)結(jié)果而組成。這種通信是通過HTTP報(bào)文(HTTP message)的格式化數(shù)據(jù)塊進(jìn)行的。狀態(tài)碼:每個(gè)HTTP響應(yīng)報(bào)文返回時(shí)都會(huì)攜帶一個(gè)狀態(tài)碼。狀態(tài)碼是一個(gè)三位數(shù)字的代碼,告知客戶端的請求結(jié)果。報(bào)文:HTTP報(bào)文時(shí)由一行一行的簡單字符串組成。HTTP報(bào)文都是純文本,不是二進(jìn)制,所以人們可以很方便的對它進(jìn)行讀寫。從客戶端到服務(wù)器的稱為請求報(bào)文,從服務(wù)器到客戶端的為響應(yīng)報(bào)文。HTTP報(bào)文包括三部分:HTTP報(bào)文詳解?
請求行請求頭主體代理:代理位于客戶端和服務(wù)器之間,接受所有客戶端的HTTP請求,并將這些請求轉(zhuǎn)發(fā)給服務(wù)器。更多的文章,在維基百科中查詢對應(yīng)關(guān)鍵字。