目录
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秒)。