10、使用ws调用Rest api

目录

1、简介

2、添加WS配置

3、发送请求

4、处理请求

5、常用模式和用例 

6、自定义BodyReadables和BodyWritables

6、独立WS

7、访问AsyncHttpClient

8、配置WS


1、简介

有时我们想从一个play应用程序中调用其他HTTP服务。Play提供了WS库来进行异步HTTP方法调用。

2、添加WS配置

在build.sbt文件中添加如下配置:

libraryDependencies ++= Seq(

  javaWs

)

其次还要开启Http缓存,PlayWS支持HTTP缓存,但需要JSR-107缓存实现才能启用此功能。可以添加ehcache:

libraryDependencies += ehcache

3、发送请求

首先需要注入play提供的Ws的相关类

借助ws.url()方法可以创建请求:

然后可以为这个请求request设置一些基本的信息:

最后调用与要使用的HTTP方法对应的方法:

可以使用如下方法发送带有身份验证信息的请求:

其中第三个参数WSAauthScheme的取值选项:basic、digest、kerberos、ntlm和spnego

可以通过一下方式使得请求可以重定向:

如下方式添加查询参数:

如下方式添加头信息:

如下方式添加cookie信息:

设施请求超时时间:

提交表单数据:

  

提交multipart/form类型的表单数据:

提交json格式数据:

提交xml格式数据:

提交流到请求中:

 通过给请求添加filter对其作一些别的事:

 

4、处理请求

Play中使用WSResponse来封装响应信息

以json格式的形式处理响应:

以xml格式的形式处理响应:

处理流式响应:

 

5、常用模式和用例 

连接ws调用:

异常恢复:

 将CompletionStage<WSResponse>对象直接映射成 CompletionStage<Result>:

超时处理:

6、自定义BodyReadables和BodyWritables

也可以将自定义类型与response.getBody(myreadable())和request.post(mywritable(data))一起使用

自定义Readables:

自定义Writables:

6、独立WS

如果想脱离play使用ws,则可以添加依赖库:

libraryDependencies += "com.typesafe.play" %% "play-ahc-ws-standalone" % playWSStandalone

即可,不依赖于任何的play库

7、访问AsyncHttpClient

8、配置WS

在application.conf中进行设置:

play.ws.followRedirects:将客户端配置为遵循301和302重定向(默认值为true)。

play.ws.useProxyProperties:使用系统HTTP代理设置(http.proxyhost,http.proxyport)(默认为true)。

play.ws.user agent:配置用户代理头字段。

play.ws.compressionEnabled:将其设置为true以使用gzip/deflater编码(默认值为false)。

play.ws.timeout.connection:连接到远程主机时等待的最长时间(默认为120秒)。

play.ws.timeout.idle:请求可以保持空闲的最长时间(建立连接但等待更多数据)(默认为120秒)。

play.ws.timeout.request:接受请求所用的总时间(即使远程主机仍在发送数据,请求也会中断)(默认值为120秒)。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值