一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

webservice接口與HTTP接口學(xué)習(xí)筆記

 法律安全 2019-10-14

一、webservice 的概念

Web 是使應(yīng)用程序可以與平臺和編程語言無關(guān)的方式進(jìn)行相互通信的一項(xiàng)技術(shù)。Web 服務(wù)是一個軟件接口,它描述了一組可以在網(wǎng)絡(luò)上通過標(biāo)準(zhǔn)化的 XML 消息傳遞訪問的操作。它使用基于 XML 語言的協(xié)議來描述要執(zhí)行的操作或者要與另一個 Web 服務(wù)交換的數(shù)據(jù)。一組以這種方式交互的 Web 服務(wù)在面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA)中定義了特殊的 Web 服務(wù)應(yīng)用程序。

簡單的說WebService是一個SOA(面向服務(wù)的編程)的架構(gòu),它是不依賴于語言,不依賴于平臺,可以實(shí)現(xiàn)不同的語言(通過 xml 描述)間的相互調(diào)用,通過Internet進(jìn)行基于Http協(xié)議的網(wǎng)絡(luò)應(yīng)用間的交互。通過SOAP在Web上提供的軟件服務(wù),使用WSDL文件進(jìn)行說明,并通過UDDI進(jìn)行注冊。

XML:(Extensible Markup Language)擴(kuò)展型可標(biāo)記語言。面向短期的臨時數(shù)據(jù)處理、面向萬維網(wǎng)絡(luò),是Soap的基礎(chǔ)。

Soap:(Simple Object Access Protocol)簡單對象存取協(xié)議。是XML Web Service 的通信協(xié)議。當(dāng)用戶通過UDDI找到你的WSDL描述文檔后,他通過可以SOAP調(diào)用你建立的Web服務(wù)中的一個或多個操作。SOAP是XML文檔形式的調(diào)用方法的規(guī)范,它可以支持不同的底層接口,像HTTP(S)或者SMTP。

WSDL:(Web Services Description Language) WSDL 文件是一個 XML 文檔,用于說明一組 SOAP 消息以及如何交換這些消息。大多數(shù)情況下由軟件自動生成和使用。

UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務(wù)供應(yīng)商和使用者的新項(xiàng)目。在用戶能夠調(diào)用Web服務(wù)之前,必須確定這個服務(wù)內(nèi)包含哪些商務(wù)方法,找到被調(diào)用的接口定義,還要在服務(wù)端來編制軟件,UDDI是一種根據(jù)描述文檔來引導(dǎo)系統(tǒng)查找相應(yīng)服務(wù)的機(jī)制。UDDI利用SOAP消息機(jī)制(標(biāo)準(zhǔn)的XML/HTTP)來發(fā)布,編輯,瀏覽以及查找注冊信息。它采用XML格式來封裝各種不同類型的數(shù)據(jù),并且發(fā)送到注冊中心或者由注冊中心來返回需要的數(shù)據(jù)。

二、webservice接口測試

測試webservice接口,可以使用soapUI來進(jìn)行測試,下面簡單用soapUI來調(diào)用webservice接口:

1.打開soapUI,新建一個soap工程:

2.我們以天氣預(yù)報的wsdl地址為例,導(dǎo)入soapUI查看其中的所有接口信息;

wsdl地址 http://www./WebServices/WeatherWebService.asmx?wsdl

3、查看接口及報文,輸入?yún)?shù)直接進(jìn)行調(diào)用

 

發(fā)送報文:

<soapenv:Envelope xmlns:soapenv="http://schemas./soap/envelope/" xmlns:web="http://WebXml.com.cn/">
   <soapenv:Header/>
   <soapenv:Body>
      <web:getSupportCity>
         <!--Optional:-->
         <web:byProvinceName>北京</web:byProvinceName>
      </web:getSupportCity>
   </soapenv:Body>
</soapenv:Envelope>

返回報文:

<soap:Envelope xmlns:soap="http://schemas./soap/envelope/" xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:xsd="http://www./2001/XMLSchema">
   <soap:Body>
      <getSupportCityResponse xmlns="http://WebXml.com.cn/">
         <getSupportCityResult>
            <string>北京 (54511)</string>
            <string>上海 (58367)</string>
            <string>天津 (54517)</string>
            <string>重慶 (57516)</string>
         </getSupportCityResult>
      </getSupportCityResponse>
   </soap:Body>
</soap:Envelope>

1、根元素:Envelope。

2、Header元素::不是強(qiáng)制出現(xiàn),由程序員控制,主要用于攜帶一些額外的信息,比如用戶名、密碼

3、Body:調(diào)用正確,body元素內(nèi)容應(yīng)該遵守WSDL要求的格式。

 三、HTTP接口

Http協(xié)議是建立在TCP協(xié)議基礎(chǔ)之上的,當(dāng)瀏覽器需要從服務(wù)器獲取網(wǎng)頁數(shù)據(jù)的時候,會發(fā)出一次Http請求。Http會通過TCP建立起一個到服務(wù)器的連接通道,當(dāng)本次請求需要的數(shù)據(jù)完畢后,Http會立即將TCP連接斷開,這個過程是很短的。所以Http連接是一種短連接,是一種無狀態(tài)的連接。
HTTP協(xié)議的主要特點(diǎn)可概括如下:
1.支持客戶/服務(wù)器模式。
2.簡單快速:客戶向服務(wù)器請求服務(wù)時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于HTTP協(xié)議簡單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。
3.靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。
4.無連接:無連接的含義是限制每次連接只處理一個請求。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。
5.無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時它的應(yīng)答就較快。

 URL解析

    在WWW上,每一信息資源都有統(tǒng)一的且在網(wǎng)上唯一的地址,該地址就叫URL(Uniform Resource Locator,統(tǒng)一資源定位符),它是WWW的統(tǒng)一資源定位標(biāo)志,就是指網(wǎng)絡(luò)地址。HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)之上。瀏覽器作為HTTP客戶端通過URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請求。Web服務(wù)器根據(jù)接收到的請求后,向客戶端發(fā)送響應(yīng)信息。

URL由三部分組成:資源類型、存放資源的主機(jī)域名、資源文件名。
URL的一般語法格式為(帶方括號[]的為可選項(xiàng)):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment

 以下面的URL為例:

http://blog.sina.com.cn/s/blog_537ad6610102xtb1.html?tj=hist

1、協(xié)議部分,代表頁面使用的是http協(xié)議,在Internet中可以使用多種協(xié)議,如HTTP,F(xiàn)TP等等。在"HTTP"后面的“//”為分隔符;

2、域名部分,blog.sina.com.cn,也可以使用IP地址作為域名使用如:192.168.55.14:8080,其中8080為端口,域名和端口之間使用“:”作為分隔符。端口不是一個URL必須的部分,如果省略端口部分,將采用默認(rèn)端口80/tcp;

3、虛擬目錄部分,從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/s/”

4、文件名部分:從域名后的最后一個“/”開始到“?”為止,是文件名部分,如果沒有“?”,則是從域名后的最后一個“/”開始到“#”為止,是文件部分,如果沒有“?”和“#”,那么從域名后的最后一個“/”開始到結(jié)束,都是文件名部分。本例中的文件名是“blog_537ad6610102xtb1.html”。文件名部分也不是一個URL必須的部分,如果省略該部分,則使用默認(rèn)的文件名

5、錨部分:從“#”開始到最后,都是錨部分。錨部分也不是一個URL必須的部分(可以理解為定位)

6、參數(shù)部分:從“?”開始到“#”為止之間的部分為參數(shù)部分,又稱搜索部分、查詢部分。本例中的參數(shù)部分為“7.參數(shù)部分:從“?”開始到“#”為止之間的部分為參數(shù)部分,又稱搜索部分、查詢部分。本例中的參數(shù)部分為“boardID=5&ID=24618&page=1”。參數(shù)可以允許有多個參數(shù),參數(shù)與參數(shù)之間用“&”作為分隔符?!?。參數(shù)可以允許有多個參數(shù),參數(shù)與參數(shù)之間用“&”作為分隔符。

二、HTTP協(xié)議結(jié)構(gòu)

HTTP請求消息

客戶端發(fā)送一個HTTP請求到服務(wù)器的請求消息包括以下格式:

請求行(request line)、請求頭部(header)、空行和請求數(shù)據(jù)四個部分組成。 

格式如下:

<request-line>
<headers>
<blank line>
[<request-body>

1、請求行

請求行由請求方法字段、URL字段和HTTP協(xié)議版本字段3個字段組成,它們用空格分隔。例如,GET /index.html HTTP/1.1。

HTTP協(xié)議的請求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
最常用的方法有:
GET方法:在瀏覽器的地址欄中輸入網(wǎng)址的方式訪問網(wǎng)頁時,瀏覽器采用GET方法向服務(wù)器獲取資源,

POST方法要求被請求服務(wù)器接受附在請求后面的數(shù)據(jù),常用于提交表單。
2、請求頭部

請求頭部由關(guān)鍵字/值對組成,每行一對,關(guān)鍵字和值用英文冒號“:”分隔。請求頭部通知服務(wù)器有關(guān)于客戶端請求的信息,典型的請求頭有:

User-Agent:產(chǎn)生請求的瀏覽器類型。

Accept:客戶端可識別的內(nèi)容類型列表。

Host:請求的主機(jī)名,允許多個域名同處一個IP地址,即虛擬主機(jī)。

3、空行

最后一個請求頭之后是一個空行,發(fā)送回車符和換行符,通知服務(wù)器以下不再有請求頭。
4、請求正文

請求數(shù)據(jù)不在GET方法中使用,而是在POST方法中使用。POST方法適用于需要客戶填寫表單的場合。與請求數(shù)據(jù)相關(guān)的最常使用的請求頭是Content-Type和Content-Length。

HTTP響應(yīng)消息

在接收和解釋請求消息后,服務(wù)器返回一個HTTP響應(yīng)消息。

HTTP響應(yīng)也是由三個部分組成,分別是:狀態(tài)行、消息報頭、響應(yīng)正文

報文格式:

<status-line>
<headers>
<blank line>
[<response-body>]


1、狀態(tài)行格式如下:

HTTP-Version Status-Code Reason-Phrase CRLF

其中,HTTP-Version表示服務(wù)器HTTP協(xié)議的版本;Status-Code表示服務(wù)器發(fā)回的響應(yīng)狀態(tài)代碼;Reason-Phrase表示狀態(tài)代碼的文本描述。
狀態(tài)代碼有三位數(shù)字組成,第一個數(shù)字定義了響應(yīng)的類別,且有五種可能取值:
1xx:指示信息--表示請求已接收,繼續(xù)處理
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重定向--要完成請求必須進(jìn)行更進(jìn)一步的操作
4xx:客戶端錯誤--請求有語法錯誤或請求無法實(shí)現(xiàn)
5xx:服務(wù)器端錯誤--服務(wù)器未能實(shí)現(xiàn)合法的請求
常見狀態(tài)代碼、狀態(tài)描述、說明:
200 OK      //客戶端請求成功
400 Bad Request  //客戶端請求有語法錯誤,不能被服務(wù)器所理解
401 Unauthorized //請求未經(jīng)授權(quán),這個狀態(tài)代碼必須和WWW-Authenticate報頭域一起使用 
403 Forbidden  //服務(wù)器收到請求,但是拒絕提供服務(wù)
404 Not Found  //請求資源不存在,eg:輸入了錯誤的URL
500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯誤
503 Server Unavailable  //服務(wù)器當(dāng)前不能處理客戶端的請求,一段時間后可能恢復(fù)正常
eg:HTTP/1.1 200 OK (CRLF)

2、響應(yīng)報頭

響應(yīng)頭用于描述服務(wù)器的基本信息,以及數(shù)據(jù)的描述,服務(wù)器通過這些數(shù)據(jù)的描述信息,可以通知客戶端如何處理等一會兒它回送的數(shù)據(jù)。

3、響應(yīng)正文

響應(yīng)體就是響應(yīng)的消息體,如果是純數(shù)據(jù)就是返回純數(shù)據(jù),如果請求的是HTML頁面,那么返回的就是HTML代碼,如果是JS就是JS代碼

post與get的區(qū)別

get請求:向服務(wù)端獲取請求;數(shù)據(jù)放在URL里,有長度限制;
post請求:向服務(wù)端發(fā)送請求;數(shù)據(jù)放在body里,無長度限制;更安全
http接口返回json串:一種通用的數(shù)據(jù)類型
接口的返回值;
{
"error_code": 0,
"stu_info": [
{
"id": 1,
"name": "灝忛粦",
"sex": 男",
"age": 18,
"addr": "北京市海淀區(qū)",
"grade": "三年二班",
"phone": "18612532941",
"gold": 11212
}
]
}

測試接口調(diào)用演練

 get接口

  • 請求URL  http://api./api/user/stu_info

  • 請求方式  get

  • 請求參數(shù)

                       參數(shù)名        必選     類型     說明

                       stu_name    是       string    學(xué)生姓名

1、直接用瀏覽器調(diào)用

2、使用postman 調(diào)用

可以看到postman選擇get方法的時候,body是禁用狀態(tài),get方法的http接口請求,一般數(shù)據(jù)都放到URL中。

返回的方式同樣也是json串的形式;

 3、使用jmeter進(jìn)行g(shù)et方法的調(diào)用測試

創(chuàng)建線程組

添加HTTP請求

輸入域名、URL、選擇請求方法、添加key

添加查看結(jié)果樹

執(zhí)行接口

可以在查看結(jié)果樹中查看執(zhí)行結(jié)果及返回?cái)?shù)據(jù)

post 請求接口

登錄接口

  • 請求URL  http://api./api/user/login

  • 請求方式    post

  • 請求參數(shù)  參數(shù)為key-value形式

                       參數(shù)名        必選     類型     說明

                       username    是       string    用戶名

                       passwd        是        string   密碼

       登陸用戶名:niuhanyang

       密碼:aA123456

返回參數(shù)說明

                      參數(shù)名         類型   說明

                       error_code  int       錯誤編碼,0為操作成功

                       login_info   object   登錄對象信息

                       userId        int        用戶id

                       sign           string     簽名

                       login_time  string  登錄時間

 1、postman 進(jìn)行調(diào)用

post方法的參數(shù)是放在body中的,可以看到參數(shù)放到URL中是無效的

把參數(shù)放到body中在進(jìn)行提交

放到body中,以key-value的形式進(jìn)行傳參,返回json串的形式,參照返回參數(shù)說明,可以看到登陸成功。

2、用jmeter 進(jìn)行調(diào)用測試

打開jmeter ->添加->threads->線程組

 

 在線程組中添加->sampler->HTTP請求

 

 輸入域名、URL、選擇方法為post 、輸入?yún)?shù)

執(zhí)行并查看結(jié)果返回值

添加學(xué)生信息接口

  • 請求URL:http://api./api/user/add_stu

  • 請求方式  post 

  • 參數(shù) ,入?yún)⑹莏son類型

                        參數(shù)名        必選     類型     說明

                       name           是       string    學(xué)生姓名

                       grade           是        string   班級

                      phone           是      string    電話

                      sex               否      string    性別,如果不傳,默認(rèn)為男

                       age               否    string    年齡 ,不傳默認(rèn)為18

                       add              否     string   地址,如果不傳默認(rèn)為北京市昌平區(qū)

返回參數(shù)說明

                       參數(shù)名         類型   說明

                       error_code  int       錯誤編碼,1000為操作成功

                       msg            string   提示信息

如上述描述,入?yún)⑿问綖閖son 的方式,則使用key-value的形式進(jìn)行傳參就不行了,如下:

現(xiàn)在我們用正確的入?yún)⒎绞竭M(jìn)行調(diào)用

1、postman調(diào)用

在postman中,選擇方法為post,輸入URL地址,在body中選擇raw ,輸入json串格式的參數(shù)

 

2、使用jmeter調(diào)用接口

我們下面看一下jmeter如何進(jìn)行調(diào)用

創(chuàng)建一個http請求,輸入域名、路徑、方法為post、在body data中輸入json ,然后執(zhí)行

可以在查看結(jié)果樹中的請求項(xiàng)中查看請求報文內(nèi)容

在響應(yīng)數(shù)據(jù)中查看響應(yīng)結(jié)果,執(zhí)行成功

學(xué)生金幣充值

  • 請求URL:http://api./api/user/gold_add

  • 請求方式  post 

  • 參數(shù) ,

    該接口有權(quán)限驗(yàn)證,需要admin用戶才可以做操作,需要添加cookie

    cookie中key為登錄的用戶名,value從登錄接口中獲取,登陸成功之后會返回sign

                        參數(shù)名        必選     類型     說明

                       stu_id           是       int    學(xué)生id

                       gold           是        int     金幣數(shù)量

返回參數(shù)說明

                       參數(shù)名         類型   說明

                       error_code  int       錯誤編碼,0為操作成功

                       msg            string   提示信息

如上述描述,入?yún)⑿问叫枰砑觕ookie 

1、postman進(jìn)行調(diào)用,添加cookie的方式

cookie說的直白點(diǎn)就是保存在用戶瀏覽器端的一個鍵值對

提到cookie肯定不能少了session,什么是session呢,session就是保存在服務(wù)器的一個鍵值對,一般session都是存在緩存里面,因?yàn)橐?jīng)常用到,要提升性能的話直接把session放到內(nèi)存里面。

首先我們通過“獲取學(xué)生信息”接口查看到學(xué)生的id信息,然后通過“登錄”接口,獲取簽名的值如下:以test 用戶為例:

查詢出ID=2341

sign值為:cd2b43f1688e472e3a516b5a2c6831e8

現(xiàn)在為學(xué)生添加金幣

2、用jmeter進(jìn)行接口的調(diào)用

用jmeter測試帶cookie的http請求需要添加http cookie管理器

我們先看一下添加cookie的場合進(jìn)行執(zhí)行

可以看到?jīng)]有添加cookie的場合,執(zhí)行不成功

現(xiàn)在我們添加httpcookie管理器,右鍵添加->配置元件->HTTP cookie管理器

添加cookie的值

執(zhí)行,查看請求的數(shù)據(jù)

 獲取所有學(xué)生信息

  • 請求URL:http://api./api/user/all_stu

  • 請求方式  get

  • 參數(shù) ,需要添加header信息,key為Referer value 為http://api./

返回參數(shù)說明

                       參數(shù)名         類型   說明

                       error_code  int       錯誤編碼,0為操作成功

                       all_stu          list      提示信息

1、我們看一下不添加header,直接用瀏覽器地址欄訪問的結(jié)果

如下,不添加header訪問,提示來路不正確

 

 2、用postman進(jìn)行調(diào)用,添加header信息,并進(jìn)行調(diào)用

執(zhí)行,結(jié)果顯示所有的學(xué)生用戶信息

3、用jmeter進(jìn)行調(diào)用測試

添加http請求

右鍵添加->配置元件->http信息頭管理器

執(zhí)行結(jié)果成功,顯示學(xué)生信息

 

文件上傳類型

  • 請求URL:http://api./api/file/file_upload

  • 請求方式  post 

  • 參數(shù)

                        參數(shù)名        必選     類型     說明

                       file              是        file       文件     

返回參數(shù)說明

                       參數(shù)名         類型   說明

                       error_code  int       錯誤編碼,0為操作成功

                       msg            string   提示信息

1、用postman進(jìn)行調(diào)用,輸入URL地址,key的類型選擇file類型

選擇文件進(jìn)行上傳

執(zhí)行操作成功

 2、使用jmeter進(jìn)行調(diào)用

執(zhí)行,操作成功

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    深夜日本福利在线观看| 国产精品久久女同磨豆腐| 国产又粗又猛又黄又爽视频免费| 国产麻豆精品福利在线| 激情内射日本一区二区三区| 91亚洲精品亚洲国产| 亚洲一区二区精品福利| 亚洲一区二区欧美在线| 国产成人在线一区二区三区| 久久精品国产在热亚洲| 亚洲免费黄色高清在线观看| 国产精品激情对白一区二区| 色鬼综合久久鬼色88| 亚洲一区二区三区熟女少妇| 国产一二三区不卡视频| 天海翼精品久久中文字幕| 欧美激情区一区二区三区| 久热这里只有精品九九| 91精品视频全国免费| 欧美日韩最近中国黄片| 日本加勒比在线观看一区| 国产女性精品一区二区三区| 日本免费一区二区三女| 欧美乱妇日本乱码特黄大片 | 午夜亚洲少妇福利诱惑| 国产在线视频好看不卡| 免费特黄一级一区二区三区| 日本女优一区二区三区免费| 日本一二三区不卡免费| 日韩夫妻午夜性生活视频| 欧美国产日产综合精品| 日韩欧美第一页在线观看| 久久综合九色综合欧美| 欧美精品在线播放一区二区| 福利一区二区视频在线| 精品国产91亚洲一区二区三区| 日本av在线不卡一区| 欧美午夜伦理在线观看| 国产中文另类天堂二区| 麻豆看片麻豆免费视频| 中文文精品字幕一区二区|