gpt4 book ai didi

java - 如何从 Play WSClient 的字符串创建 WSResponse 对象

转载 作者:搜寻专家 更新时间:2023-11-01 03:00:53 25 4
gpt4 key购买 nike

Documentation建议使用模拟网络服务测试基于 WSClient 的 API 客户端,即创建一个 play.server.Server 来响应真实的 HTTP 请求。

我更愿意直接从文件创建 WSResponse 对象,完成状态行、标题行和正文,而不需要真正的 TCP 连接。这将需要更少的依赖并运行得更快。在其他情况下也可能有用。

但是我找不到一个简单的方法来做到这一点。似乎所有由 WSResponse 包装的实现都与从网络读取相关。

我应该为此创建自己的 WSResponse 子类,还是我错了,它已经存在了?

最佳答案

Play 的 API 似乎有意变得迟钝。您必须使用它们的“可缓存”类,这是唯一可以从您周围的对象直接实例化的类。

这应该让你开始:

import play.api.libs.ws.ahc.AhcWSResponse;
import play.api.libs.ws.ahc.cache.CacheableHttpResponseBodyPart;
import play.api.libs.ws.ahc.cache.CacheableHttpResponseHeaders;
import play.api.libs.ws.ahc.cache.CacheableHttpResponseStatus;
import play.shaded.ahc.io.netty.handler.codec.http.DefaultHttpHeaders;
import play.shaded.ahc.org.asynchttpclient.Response;
import play.shaded.ahc.org.asynchttpclient.uri.Uri;

AhcWSResponse response = new AhcWSResponse(new Response.ResponseBuilder()
.accumulate(new CacheableHttpResponseStatus(Uri.create("uri"), 200, "status text", "protocols!"))
.accumulate(new CacheableHttpResponseHeaders(false, new DefaultHttpHeaders().add("My-Header", "value")))
.accumulate(new CacheableHttpResponseBodyPart("my body".getBytes(), true))
.build());

神秘的 boolean 值没有记录。我的猜测是 BodyPart 的 boolean 值是它是否是 body 的最后一部分。我对 header 的猜测是 header 是否在消息的尾部。

关于java - 如何从 Play WSClient 的字符串创建 WSResponse 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34753534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com