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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笨小猴

笨小猴 题目描述 笨小猴的词汇量很小&#xff0c;所以每次做英语选择题的时候都很头疼。但是他找到了一种方法&#xff0c;经试验证明&#xff0c;用这种方法去选择选项的时候选对的几率非常大&#xff01; 这种方法的具体描述如下&#xff1a;假设maxn是单词中出现次数最多…

codeforces Cable Connection

我的思路很暴力 直接枚举斜率[-100000,0]之间&#xff0c;然后设置一个非常远的直线&#xff0c;对所有点扫一遍&#xff0c;确定一个离这条直线最近的点P。 用点P和斜率k来创建cable&#xff0c;并用cable的距离来relax答案。 现在问题在于&#xff0c;怎么来枚举k&#xf…

拥抱开源,Office 365 开发迎来新时代

前言作为全球最大的开放源代码托管平台&#xff0c;Github在上周迎来了它的十岁生日。自从2008年正式上线以来&#xff0c;Github上面汇聚了数以千万计的开发人员和各种项目&#xff0c;它几乎成为了开源的代名词和风向标&#xff0c;各大软件巨头都纷纷支持&#xff0c;在广大…

jzoj4015-数列【循环节,数论】

正题 题目链接:https://jzoj.net/senior/#contest/show/3011/0 题目大意 给出n,m,a,b,c,x0n,m,a,b,c,x_0n,m,a,b,c,x0​ xiaxi−12bxi−1cx_iax_{i-1}^2bx_{i-1}cxi​axi−12​bxi−1​c 求xn%mx_n\%mxn​%m 解题思路 第一段n≤1e6n\leq 1e6n≤1e6直接O(n)O(n)O(n)暴力做 第…

11、OAuth和OpenID服务

1、OAuth 1、1 简介 OAuth是发布受保护数据并与之交互的简单方法。对于人们来说&#xff0c;这也是一种更安全的访问方式。例如&#xff0c;它可以用来访问你的用户在Twitter上的数据。Play仅提供对OAuth 1.0的支持。 1、2 基本工作原理 在build.sbt中添加配置&#xff1a;…

求凸函数极值 CSF迭代法(雾)

简介 本算法用来求解凸函数极值点的问题&#xff0c;由我在写ACM习题时想到&#xff0c;在网上并未找到这样的算法&#xff0c;拿出来给大家分享一下&#xff0c;如果网上没有的话&#xff0c;我决定给它起名叫做 CSF迭代法&#xff0c;如果这个算法早已经存在&#xff0c;那就…

排座椅【贪心】

排座椅 题目描述 上课的时候总有一些同学和前后左右的人交头接耳&#xff0c;这是令小学班主任十分头疼的一件事情。不过&#xff0c;班主任小雪发现了一些有趣的现象&#xff0c;当同学们的座次确定下来之后&#xff0c;只有有限的D对同学上课时会交头接耳。同学们在教室中坐…

jzoj4016-圈地为王【状压,bfs,几何】

正题 题目链接:https://jzoj.net/senior/#contest/show/3011/1 题目大意 n∗mn*mn∗m的格子&#xff0c;格子之间有道路&#xff0c;对于每个iii就走过最短的回路使得 圈住iii个有价值的格子没有圈住任何一个坏格子 解题思路 判断一个点是否在一个多边形内&#xff0c;我们可…

12、play整合Akka

1、简介 Akka使用actor模型来提高抽象级别&#xff0c;并提供一个更好的平台来构建正确的并发和可扩展的应用程序。在容错方面&#xff0c;它采用了“Let it crash”的模式&#xff0c;这种模式在电信行业获得了巨大成功&#xff0c;用于构建永不停止的自我修复系统应用程序。…

codeforces National Property 2sat模板题

题目链接 每个字符只能取小写和大写两种情况&#xff0c;因此满足2-sat的要求。 我们从第2个word开始&#xff0c;与前一个word进行比较。比较的时候从word左边的字符开始&#xff0c;找到左起的第一个不相同的字符(位置为pos)。 1.如果word[i-1][pos]<word[i][pos]。 …

传球游戏【DP】

传球游戏传球游戏传球游戏 题目描述 上体育课的时候&#xff0c;小蛮的老师经常带着同学们一起做游戏。这次&#xff0c;老师带着同学们一起做传球游戏。 游戏规则是这样的&#xff1a;n个同学站成一个圆圈&#xff0c;其中的一个同学手里拿着一个球&#xff0c;当老师吹哨子…

ASP.NET Core 添加统一模型验证处理机制

一.前言模型验证自ASP.NET MVC便有提供&#xff0c;我们可以在Model(DTO)的属性上加上数据注解&#xff08;Data Annotations&#xff09;特性&#xff0c;在进入Action之前便会根据数据注解&#xff0c;来验证输入的数据是否合法&#xff0c;下面介绍以下如何统一处理验证并返…

jzoj4017-逃跑【0/1分数规划,线段树,dp】

正题 题目链接:https://jzoj.net/senior/#contest/show/3011/2 题目大意 n1n1n1个连续的地方&#xff0c;每个地方有(a,b,c)(a,b,c)(a,b,c)。 从000开始&#xff0c;每次往前选择一个不超过LLL的位置&#xff0c;跳到那里并选择中间不包括起点的位置中ccc最大的地方获取这个位…

13、play中实现信息国际化

目录 1、指定应用使用的语言 2、语言配置文件 3、在Controller中使用 4、在模板中使用 5、改变当前请求的语言 6、格式化信息 1、指定应用使用的语言 在conf/application.conf中进行配置&#xff1a; 这些语言标记将用于创建play.i18n.Lang实例。要访问应用程序支持的语…

重温基数排序

前几天沈阳现场赛遇到了一道题&#xff0c;其中的一部分不能用快排&#xff0c;只能用基数排序&#xff0c;当时不会写基数排序&#xff0c;gg&#xff0c;从银滑到了铜。。。。真是血的教训&#xff0c;现在再来回顾一下。 输入n个整数&#xff0c;最大的整数不超过6位&#…

2018年10月17日普级B组【模拟赛】

2018年10月17日普级B组模拟赛2018年10月17日普级B组模拟赛2018年10月17日普级B组模拟赛 第一题——ISBN号码第一题——ISBN号码第一题——ISBN号码 博客链接&#xff1a; https://blog.csdn.net/ssllyf/article/details/83212746 第二题——笨小猴第二题——笨小猴第二题——笨…

讨论过后而引发对EF 6.x和EF Core查询缓存的思考

前言最近将RabbitMQ正式封装引入到.NET Core 2.0项目当中&#xff0c;之前从未接触过这个高大上的东东跟着老大学习中&#xff0c;其中收获不少&#xff0c;本打算再看看RabbitMQ有时间写写&#xff0c;回来后和何镇汐大哥探讨了一点关于EF和EF Core的内容&#xff0c;于是乎本…

CF297E-Mystic Carvings【树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/CF297E 题目大意 2∗n2*n2∗n个点的圆&#xff0c;nnn条圆上不交的弦&#xff0c;选择三条使得每条弦对应的弧上的点数量相等。 解题思路 就这5种情况&#xff0c;其中满足条件的是222和555&#xff0c;我们用容斥去掉1,3,41,…

14、使用play搭建一个web应用用例

目录 1、play下载 2、启动play项目 3、将项目导入到eclipse 4、play项目中前端开发 5、添加bootstrap ace页面模板 1、play下载 找到官网&#xff0c;直接下载即可 2、启动play项目 解压文件&#xff0c;进入到项目顶级目录 等一会&#xff0c;下载jar包&#xff0c;第一…

截取【二分】

截取 题目描述 给你N段线的长度&#xff0c;现在要你从他们上面切下K段来&#xff08;切下的不能合并&#xff09;&#xff0c;使得这K段长度相等&#xff0c;并且最大。如若求出的答案小于0.01&#xff0c;则认为无解&#xff0c;输出0.00。&#xff08;所有非整数都精确到了…