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秒)。
10、使用ws调用Rest api相关推荐
- Play 2.6 使用Play WS调用REST API
使用Play WS调用REST API https://playframework.com/documentation/2.6.x/JavaWS 又是我们需要去访问别的HTTP服务器的资源.PLAY提 ...
- 调用公共API接口导出联系人之Hotmail
总结下之前项目中用到的,如何调用公共api来获取用户邮箱的联系人列表. 这里主要说下代码的部分,因为之前还需要一些api账号的配置,不同的api区别还比较大,这次先说下微软的hotmail,msn 首 ...
- python 图表_Python入门学习系列——使用Python调用Web API实现图表统计
使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...
- C#中调用Windows API的要点
在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...
- python调用zabbix api接口实时展示数据
近日公司准备自已做一个运维管理平台,其中的监控部分,打算调用zabbix api接口来进行展示. 经过思考之后,计划获取如下内容: 1. 获得认证密钥 2. 获取zabbix所有的主机组 3. ...
- MSIL 教程(二):数组、分支、循环、使用不安全代码和如何调用Win32 API(转)...
转自:http://www.cnblogs.com/Yahong111/archive/2007/08/16/857574.html 续上文[翻译]MSIL 教程(一) ,本文继续讲解数组.分支.循环 ...
- 善于 调用Windows API
前一段时间看见别人做的一个自动填写信息并且点击登录的程序,觉得很有意思. 其实就是在程序中调用Windows的API,那么如何调用,下面就做个简单的介绍. 写的简单粗暴, 不喜轻喷. 0.首先引入名称 ...
- C#中调用Windows API的要点【转载】
在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...
- [收集]Visual C#中调用Windows API
在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...
最新文章
- springboot配置国际化资源文件 使用themself模板进行解析
- 2018年4月份,阿里最新的java程序员面试题目
- lintcode:形状工厂
- go导入私有仓库中的包配置方法
- python是偏向bs还是cs_CS与BS架构区别、比较、及现状与趋势分析
- View4.5测试参考文档1--测试环境规划
- XML常用的几种解析方式
- RabbitMQ学习——整合Spring AMQP、SpringBoot以及Spring Cloud Stream
- npy文件的处理方式
- 专访数据挖掘领头人韩家炜教授:不要迷信权威,做学问要秉承「三个真实」...
- Linux替换压缩包下的文件,Linux下rar及zip压缩包中批量替换某文件脚本
- 【SSM框架项目 客户关系管理系统CRM 学习开发 Day3】市场活动模块的数据导入与导出
- 山东省软件设计大赛参赛经验
- Win10企业版系统安装 NET Framework 4.8的时候提示错误信息
- 新手怎么做一个小程序?
- 使用u盘安装Red Hat Enterprise 6.0
- Linux Miscellaneous Device
- 如何定时刷新一个View的内容呢? 酷课堂iOS交流群问答(201901期)
- 服务器除了一个灯亮其余的都不亮,鼠标键盘没反应
- Image Matching from Handcrafted to Deep Features: A Survey 图像匹配译文(三)