在区分大小写的模式下创建一个带有 uri 的 http 请求
Posted
技术标签:
【中文标题】在区分大小写的模式下创建一个带有 uri 的 http 请求【英文标题】:Create a http request with a uri in Case sensitive mode 【发布时间】:2022-01-07 12:26:12 【问题描述】:我有一个 https 请求,它的 uri 以大写字母开头。我已经在邮递员中对其进行了测试,并得到了响应;但是在我的 vertx (io.vertx.core) 代码中,我无法获得所需的响应响应。目标服务器似乎拒绝了我。 看来我想要的 uri 会自动变为小写。不幸的是,服务器不接受更改后的模式。
所需的 uri:/Internalservice
https://example.com/Internalservice
我用这个webClient:io.vertx.ext.web.client;
这是我的方法:
public CompletionStage<HttpResponse> post(String host, int port, String uri, MultiMap headers, JsonObject body)
return client.post(port, host, uri)
.putHeaders(headers)
.timeout(requestTimeout.toMillis())
.sendJsonObject(body)
.toCompletionStage()
.thenApply(response -> new HttpResponse(response.statusCode(), response.body() != null ? response.body().getBytes() : new byte[]));
我必须做些什么来处理这个区分大小写的 uri?
【问题讨论】:
“我无法得到响应”是什么意思?当您提出请求时,究竟会发生什么?如果您要求,相同的代码是否有效?https://google.com
?您如何确定 URL 正在转换为小写?
@tgdavies 我已经测试过小写和大写,通过大写我得到响应没有任何问题。是的,以google.com 的形式为我工作。我的意思是我无法得到我想要的回应。它将我检测为未知用户并拒绝我的请求。
【参考方案1】:
我找到了答案! 我使用了 io.vertx.ext.web.client 的 WebClient 来创建 http post 请求。 有一个方法:HttpRequest postAbs(String absoluteURI) 在它的纪录片中我们有:
/**
* Create an HTTP POST request to send to the server using an absolute URI, specifying a response handler to receive
* the response
* @param absoluteURI the absolute URI
* @return an HTTP client request object
*/
所以它帮助了我!
我的方法是:
public CompletionStage<HttpResponse> post(String uri, MultiMap headers, JsonObject body)
return client.postAbs(uri)
.putHeaders(headers)
.timeout(requestTimeout.toMillis())
.sendJsonObject(body)
.toCompletionStage()
.thenApply(response -> new HttpResponse(response.statusCode(), response.body() != null ? response.body().getBytes() : new byte[]));
如您所见,参数与以前的版本不同。
现在我可以输入https://example.com/Internalservice
作为绝对uri。所需的 uri 不会有任何更改或转换。
【讨论】:
以上是关于在区分大小写的模式下创建一个带有 uri 的 http 请求的主要内容,如果未能解决你的问题,请参考以下文章