gpt4 book ai didi

java - 如何在 Play Framework 上模拟curl --data 'some_content=xyz'?

转载 作者:行者123 更新时间:2023-12-01 10:21:52 25 4
gpt4 key购买 nike

我一直在测试一些外部 API,这个curl 命令可以完美地与 API 的端点进行交互:

curl -i -L -H 'Accept: application/json' --data 'client_id=11111111&client_secret=2222222222' 'https://some.api.com/endpoint'

但是,我无法在 Play Framework 上模拟相同的调用。无论我如何尝试,外部 API 仍然返回一个错误,指出“client_id 为空”。当我使用curl命令时,不会发生此错误,因此我必须得出结论,我使用Play框架执行此操作的方式有问题。

这是我迄今为止尝试过的:

// Using the parameters directly in the endpoint

String data = "client_id=" + MY_CLIENT_ID;
data += "&client_secret=" + MY_CLIENT_SECRET;

WSRequestHolder request = WS.url("https://some.api.com/endpoint/" + data);
request.setHeader("Accept", "application/json");

Promise<Result> promise = request.post("").map(new Function<WS.Response, Result>() { ... }

不同的测试:

// Using the data input as JSON

ObjectNode node = Json.newObject();
node.put("client_id", MY_CLIENT_ID);
node.put("client_secret", MY_CLIENT_SECRET);

WSRequestHolder request = WS.url("https://some.api.com/endpoint/");
request.setHeader("Accept", "application/json");

Promise<Result> promise = request.post(node).map(new Function<WS.Response, Result>() {...}

我还尝试将数据字符串和 JSON 节点转换为 InputStream,如下所示:

ByteArrayInputStream input = new ByteArrayInputStream(node.toString().getBytes());

然后这样使用它:

Promise<Result> promise = request.post(input).map(new Function<WS.Response, Result>() {...}

结果始终是“client_id 为空”错误。

我正在使用 Play 2.1.5(带有 Java)。

感谢您提供的任何帮助。

最佳答案

你快明白了。尝试一下

WS.url("http://localhost:9000/echo").
setFollowRedirects(true).
setHeader("Accept", "application/json").
setHeader("Content-Type", "application/x-www-form-urlencoded").
post("client_id=11111111&client_secret=2222222222");
  • curl -L -> setFollowRedirect(true) 不确定 -i 是否会像curl 中那样工作
  • curl --data -> 添加内容类型 header

关于java - 如何在 Play Framework 上模拟curl --data 'some_content=xyz'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35548554/

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