gpt4 book ai didi

java - 命中 Java Web 服务 : curl or URLConnection

转载 作者:搜寻专家 更新时间:2023-11-01 01:55:54 27 4
gpt4 key购买 nike

我正在使用在以下 URL 上公开 RESTful API 的 Java 服务器:

http://localhost:8080/my-server/

文档建议使用 curl 提交简单的 PUT 请求(文件上传),并强烈建议用户使用与示例中提供的参数完全相同的参数。所有示例如下所示:

curl -X PUT -f -u admin:password --data-binary @/absolute/path/file/to/upload/file.ext "http://localhost:8080/my-server/file.ext"

此服务器不能与 FTP 或任何其他正常传输协议(protocol)一起使用。

我找到了 this关于 SO 的问题,回答者建议使用 java.net.URL 及其同伴 java.net.URLConnection 而不是尝试使用 curl/libcurl。

我以前从未运行过 curl 命令,所以我想问任何了解 curl 和 Java 的人是否可以使用 URL/URLConnection(或任何其他 Java 框架)代替 curl我的具体问题在这里。如果没有,那么我将不得不编写一个从本地命令行/终端执行命令的组件,然后在该组件内执行上面的 curl 命令,这感觉很丑陋/令人讨厌。

如果我可以在 Java 网络 API 中完成同样的事情,我更愿意那样做。

而且,如果它可以在 Java 中完成,我将如何使用 URL/URLConnection 来设置与我提供的示例完全相同的命令参数?具体来说:

  • -X
  • PUT
  • -f
  • -u admin:password
  • --data-binary
  • -@absolute/path/...

在此先感谢您提供任何见解或向正确的方向插入!

最佳答案

我相信这或多或少等同于使用 Java 和 :

try {
Credentials credentials = new UsernamePasswordCredentials("admin", "password"); //-u admin:password
DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.getCredentialsProvider().setCredentials(AuthScope.ANY, credentials);
HttpPut put = new HttpPut("http://localhost:8080/my-server/file.ext"); //-X PUT
put.setEntity(new FileEntity(new File("/absolute/path/file/to/upload/file.ext"), "image/png")); //@ - absolute path
httpClient.execute(put);
} catch(Exception e) {
//-f, fail silently
}

关于java - 命中 Java Web 服务 : curl or URLConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9487115/

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