10、使用ws调用Rest api
目錄
1、簡介
2、添加WS配置
3、發(fā)送請求
4、處理請求
5、常用模式和用例?
6、自定義BodyReadables和BodyWritables
6、獨(dú)立WS
7、訪問AsyncHttpClient
8、配置WS
1、簡介
有時我們想從一個play應(yīng)用程序中調(diào)用其他HTTP服務(wù)。Play提供了WS庫來進(jìn)行異步HTTP方法調(diào)用。
2、添加WS配置
在build.sbt文件中添加如下配置:
libraryDependencies ++= Seq(
? javaWs
)
其次還要開啟Http緩存,PlayWS支持HTTP緩存,但需要JSR-107緩存實(shí)現(xiàn)才能啟用此功能。可以添加ehcache:
libraryDependencies += ehcache
3、發(fā)送請求
首先需要注入play提供的Ws的相關(guān)類
借助ws.url()方法可以創(chuàng)建請求:
然后可以為這個請求request設(shè)置一些基本的信息:
最后調(diào)用與要使用的HTTP方法對應(yīng)的方法:
可以使用如下方法發(fā)送帶有身份驗(yàn)證信息的請求:
其中第三個參數(shù)WSAauthScheme的取值選項(xiàng):basic、digest、kerberos、ntlm和spnego
可以通過一下方式使得請求可以重定向:
如下方式添加查詢參數(shù):
如下方式添加頭信息:
如下方式添加cookie信息:
設(shè)施請求超時時間:
提交表單數(shù)據(jù):
??
提交multipart/form類型的表單數(shù)據(jù):
提交json格式數(shù)據(jù):
提交xml格式數(shù)據(jù):
提交流到請求中:
?通過給請求添加filter對其作一些別的事:
?
4、處理請求
Play中使用WSResponse來封裝響應(yīng)信息
以json格式的形式處理響應(yīng):
以xml格式的形式處理響應(yīng):
處理流式響應(yīng):
?
5、常用模式和用例?
連接ws調(diào)用:
異常恢復(fù):
?將CompletionStage<WSResponse>對象直接映射成 CompletionStage<Result>:
超時處理:
6、自定義BodyReadables和BodyWritables
也可以將自定義類型與response.getBody(myreadable())和request.post(mywritable(data))一起使用
自定義Readables:
自定義Writables:
6、獨(dú)立WS
如果想脫離play使用ws,則可以添加依賴庫:
libraryDependencies += "com.typesafe.play" %% "play-ahc-ws-standalone" % playWSStandalone
即可,不依賴于任何的play庫
7、訪問AsyncHttpClient
8、配置WS
在application.conf中進(jìn)行設(shè)置:
play.ws.followRedirects:將客戶端配置為遵循301和302重定向(默認(rèn)值為true)。play.ws.useProxyProperties:使用系統(tǒng)HTTP代理設(shè)置(http.proxyhost,http.proxyport)(默認(rèn)為true)。play.ws.user agent:配置用戶代理頭字段。play.ws.compressionEnabled:將其設(shè)置為true以使用gzip/deflater編碼(默認(rèn)值為false)。play.ws.timeout.connection:連接到遠(yuǎn)程主機(jī)時等待的最長時間(默認(rèn)為120秒)。play.ws.timeout.idle:請求可以保持空閑的最長時間(建立連接但等待更多數(shù)據(jù))(默認(rèn)為120秒)。play.ws.timeout.request:接受請求所用的總時間(即使遠(yuǎn)程主機(jī)仍在發(fā)送數(shù)據(jù),請求也會中斷)(默認(rèn)值為120秒)。總結(jié)
以上是生活随笔為你收集整理的10、使用ws调用Rest api的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 9、play中缓存的使用
- 下一篇: 11、OAuth和OpenID服务