gpt4 book ai didi

java - 将 Curl 转换为 Java 的 POST api

转载 作者:行者123 更新时间:2023-12-01 09:35:07 26 4
gpt4 key购买 nike

我想将一些数据发布到 REST API。

API documentation (参见第 38 页)要求提供以下信息:

curl -u "USERNAME:PASSWORD" -H "Content-type: text/xml" -X "POST"
--data-binary @-
"https://qualysapi.qualys.com/qps/rest/3.0/create/was/webapp/" <
file.xml
Note: “file.xml” contains the request POST data.
Request POST data:
<ServiceRequest>
<data>
<WebApp>
<name><![CDATA[My Web Application]]></name>
<url><![CDATA[http://mywebapp.com]]></url>
</WebApp>
</data>
</ServiceRequest>

我已确认该调用可以使用 curl 在命令行上运行。

然后我开始用 Java 编写一个小应用程序,并发现 UniRest .

这就是问题开始的地方。我不知道如何将curl请求转换为Unirest。

到目前为止我有这么多:

Unirest.post("http://apiurl).basicAuth("user","pass").field(name, file).asBinary();

后半段

.field(name, file).asBinary();

对我来说没有意义。给文件命名的意图是什么。不应该从文件中检索数据吗?

此外,我想避免将数据写入文件。如何使用 UniRest 创建相同的 xml

如果不是xml,我可以对JSON做同样的事情吗?上面附加的 API(附录 C)也接受 JSON。但是,如何使用 Unirest api 的构建器模式嵌套字段

最佳答案

根据 UniRest 文档,看起来您可以将任何字节数组写入请求中的字段。您只需将字符串编码为字节数组即可。

Unirest.post("http://apiroot")
.field(name, xmlString.getBytes(StandardCharsets.UTF_8))
.asBinary();

或者,您可以使用任何 InputStream ,

Unirest.post("http://apiroot")
.field(name, new CharSequenceInputStream(xmlString, StandardCharsets.UTF_8))
.asBinary();

通常数据是请求的正文(而不是字段)。如果您确实希望将数据作为请求正文而不是表单字段发送,则应使用 body(String body)方法而不是 field(String name, Object object)方法,例如:

String data = "<ServiceRequest>... etc...</ServiceRequest>";
Unirest.post("http://apiroot")
.body(xmlString)
.asBinary();

关于java - 将 Curl 转换为 Java 的 POST api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39046941/

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