gpt4 book ai didi

java - HttpClient - 使用 Tomcat Webdav 上传 JAR 文件导致 "invalid or corrupt jarfile"

转载 作者:行者123 更新时间:2023-11-28 23:15:23 25 4
gpt4 key购买 nike

我无法使用 Webdav 和 Apache HTTPClient 上传 JAR 文件,而不会在我尝试启动它时导致“无效或损坏的 jarfile”。

这是我的设置:

  • Webdav 服务器,在外部目录上使用 tomcat 8.5(在 $CATALINA_HOME/conf/Catalina/localhost/webdav.xml 中定义)
  • Apache HTTP 客户端 (org.apache.httpcomponents:httpclient:4.5.5)
  • 使用 HTTP 客户端上传文件的自定义 Maven 插件

在构建 JAR 后,使用自定义 maven 插件(内部使用 HTTP 客户端)上传文件。

如果我尝试使用 HTTP 客户端将文件上传到远程服务器,它会导致损坏。但是如果我使用 curl 命令发送完全相同的文件,我可以毫无问题地启动 Jar

curl -u <user>:<pass> -T <myjar>.jar http://<remotehost>/<myjar>.jar

这是使用 HTTP 客户端的示例代码:

class FileSender {
public static void main(String[] args) {
// [...]
RequestConfig.Builder cfg = RequestConfig.copy(RequestConfig.DEFAULT);
cfg = cfg.setConnectTimeout(timeout)
.setConnectionRequestTimeout(timeout)
.setSocketTimeout(timeout);

CredentialsProvider credentialsProvider = authentication.credentials();
HttpClientBuilder builder = HttpClientBuilder.create()
.setDefaultRequestConfig(cfg.build())
.setDefaultCredentialsProvider(credentialsProvider);
try(CloseableHttpClient client = builder.build()) {
HttpPut httpPut = new HttpPut("http://<remote>/<myJar>.jar");
httpPut.setEntity(MultipartEntityBuilder.create()
.addBinaryBody("file", new File("path/to/<myJar>.jar"))
.build());
try (CloseableHttpResponse response = client.execute(httpPut)) {
// Check response HTTP status
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

您有什么可能导致我的问题吗?

编辑:如果我使用 HTTP 客户端和 CURL,MD5 哈希似乎不同,但 CURL 和 FTP 副本共享相同的哈希。

最佳答案

这是使用 HttpClient 上传任何文件的方式:

CloseableHttpClient httpClient = HttpClientBuilder.create().build();

HttpEntity requestEntity = MultipartEntityBuilder.create().addBinaryBody("file", new File("myfile")).build();

HttpPost post = new HttpPost("http://...");
post.setEntity(requestEntity);

try (CloseableHttpResponse response = httpClient.execute(post)) {
System.out.print(response.getStatusLine());
}

通常使用POST方法来上传表单或文件内容。

关于java - HttpClient - 使用 Tomcat Webdav 上传 JAR 文件导致 "invalid or corrupt jarfile",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50505676/

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