目录

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相关推荐

  1. Play 2.6 使用Play WS调用REST API

    使用Play WS调用REST API https://playframework.com/documentation/2.6.x/JavaWS 又是我们需要去访问别的HTTP服务器的资源.PLAY提 ...

  2. 调用公共API接口导出联系人之Hotmail

    总结下之前项目中用到的,如何调用公共api来获取用户邮箱的联系人列表. 这里主要说下代码的部分,因为之前还需要一些api账号的配置,不同的api区别还比较大,这次先说下微软的hotmail,msn 首 ...

  3. python 图表_Python入门学习系列——使用Python调用Web API实现图表统计

    使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...

  4. C#中调用Windows API的要点

    在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...

  5. python调用zabbix api接口实时展示数据

    近日公司准备自已做一个运维管理平台,其中的监控部分,打算调用zabbix api接口来进行展示. 经过思考之后,计划获取如下内容: 1.  获得认证密钥 2.  获取zabbix所有的主机组 3.  ...

  6. MSIL 教程(二):数组、分支、循环、使用不安全代码和如何调用Win32 API(转)...

    转自:http://www.cnblogs.com/Yahong111/archive/2007/08/16/857574.html 续上文[翻译]MSIL 教程(一) ,本文继续讲解数组.分支.循环 ...

  7. 善于 调用Windows API

    前一段时间看见别人做的一个自动填写信息并且点击登录的程序,觉得很有意思. 其实就是在程序中调用Windows的API,那么如何调用,下面就做个简单的介绍. 写的简单粗暴, 不喜轻喷. 0.首先引入名称 ...

  8. C#中调用Windows API的要点【转载】

    在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...

  9. [收集]Visual C#中调用Windows API

    在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...

最新文章

  1. springboot配置国际化资源文件 使用themself模板进行解析
  2. 2018年4月份,阿里最新的java程序员面试题目
  3. lintcode:形状工厂
  4. go导入私有仓库中的包配置方法
  5. python是偏向bs还是cs_CS与BS架构区别、比较、及现状与趋势分析
  6. View4.5测试参考文档1--测试环境规划
  7. XML常用的几种解析方式
  8. RabbitMQ学习——整合Spring AMQP、SpringBoot以及Spring Cloud Stream
  9. npy文件的处理方式
  10. 专访数据挖掘领头人韩家炜教授:不要迷信权威,做学问要秉承「三个真实」...
  11. Linux替换压缩包下的文件,Linux下rar及zip压缩包中批量替换某文件脚本
  12. 【SSM框架项目 客户关系管理系统CRM 学习开发 Day3】市场活动模块的数据导入与导出
  13. 山东省软件设计大赛参赛经验
  14. Win10企业版系统安装 NET Framework 4.8的时候提示错误信息
  15. 新手怎么做一个小程序?
  16. 使用u盘安装Red Hat Enterprise 6.0
  17. Linux Miscellaneous Device
  18. 如何定时刷新一个View的内容呢? 酷课堂iOS交流群问答(201901期)
  19. 服务器除了一个灯亮其余的都不亮,鼠标键盘没反应
  20. Image Matching from Handcrafted to Deep Features: A Survey 图像匹配译文(三)

热门文章

  1. 软件构造学习笔记-第三周
  2. leetcode139. 单词拆分
  3. [mybatis]缓存_缓存有关的设置以及属性
  4. [Java基础]JDK内置注解
  5. UVA - 514 Rails-栈
  6. C++set容器-大小和交换
  7. Circle and Points POJ - 1981(单位圆覆盖最多点)
  8. Rx2.0后台开发分享
  9. c++ 位运算_C语言之运算符
  10. P4602 [CTSC2018]混合果汁(主席树)