Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行HTTP.PUT的正确方法_Java_Maven_Http_Curl_Apache Httpclient 4.x - Fatal编程技术网

Java 执行HTTP.PUT的正确方法

Java 执行HTTP.PUT的正确方法,java,maven,http,curl,apache-httpclient-4.x,Java,Maven,Http,Curl,Apache Httpclient 4.x,我正在尝试执行HTTP。将从我的maven插件放到目标服务器: private void uploadFile(Wagon wagon, String fileName, Artifact artifact) throws MojoExecutionException { if (artifact != null) { try { //org.apache.maven.wagon wagon.put(artifact.get

我正在尝试执行
HTTP。将
从我的maven插件放到目标服务器:

private void uploadFile(Wagon wagon, String fileName, Artifact artifact) throws MojoExecutionException {
    if (artifact != null) {
        try {
            //org.apache.maven.wagon
            wagon.put(artifact.getFile(), fileName);

        } catch (TransferFailedException | ResourceDoesNotExistException | AuthorizationException e) {
            throw new MojoExecutionException("failed", e);
        }
    }
}
请求

PUT /somepath/myfile.bla HTTP/1.1
Cache-control: no-cache
Cache-store: no-store
Pragma: no-cache
Expires: 0
Accept-Encoding: gzip
Content-Type: application/json
Authorization: Bearer xxx
Content-Length: 123
Host: targethost
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.3.5 (java 1.5)
回应

HTTP/1.1 404 Not Found
Server: nginx/1.12.1
Date: Thu, 31 Aug 2017 11:45:18 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 69
Connection: keep-alive
这对我来说似乎是完全合法的,但正如你所看到的,404是失败的。targethost的维护人员告诉我,路径中不能包含文件名,事实上,如果我使用cURL:

curl -v -X PUT -T myfile.bla https://targethost/somepath -H "Authorization: Bearer .." --Capath /path/to -k
其结果是:

> PUT /somepath HTTP/1.1
> User-Agent: curl/7.38.0
> Host: targethost
> Accept: */*
> Authorization: Bearer ...
> Content-Length: 123
> Expect: 100-continue
我没有按照targethost的维护者的要求执行PUT。我也试过了

File file = artifact.getFile();
((HttpWagon) wagon).putFromStream(new FileInputStream(file), fileName, file.length(), file.lastModified());

但结果是一样的。有什么提示吗

我所要做的就是从
putFromStream
调用中删除目标:

((HttpWagon) wagon).putFromStream(new FileInputStream(file), "", file.length(), file.lastModified());

我所要做的就是从
putFromStream
call中删除目标:

((HttpWagon) wagon).putFromStream(new FileInputStream(file), "", file.length(), file.lastModified());

您是否尝试过wag.put(artifact.getFile(),fileName)
但不是使用
filename==targethost/somepath/myfile.bla
而是使用
filename==targethost/somepath/
?感谢您的评论,我只是从putToStream调用中删除了目的地,现在它可以正常工作了。您尝试过
wago.put(artifact.getFile(),filename)了吗
但是使用
filename==targethost/somepath/myfile.bla
而不是
filename==targethost/somepath/
?感谢您的评论,我只是从putToStream调用中删除了目的地,现在一切正常。