javahttppost上传⽂件_Java通过HTTPPOST请求上传⽂件我想创建⼀个Java应⽤程序来执⾏以下在Windows上的CURL中⼯作。Java通过HTTP POST请求上传⽂件
curl -x XXX.XXX.XXX.XXX:8080 -X POST --data-binary "@C:\Users\XXXXX\"
XXXXX.XXX.XXXXXX.XXX/XX/XXXXXXX/XX/XXXXXXX/XXXXXXX
我已经能够复制调⽤取⽂件的内容,并张贴使⽤HttpURLConnection类然⽽,这是不可⾏的直接的URL在Java中,宁愿使⽤⽂件的⽅法,因为它可以是相当⼤。
我⽬前拥有的代码是:
import java.io.File;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.fig.RequestConfig;
import org.apache.hods.HttpPost;
import org.ity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.ity.mime.HttpMultipartMode;
public class PostFile {
public static void main(String[] args) throws Exception {
CloseableHttpClient httpclient = ateDefault();
HttpPost httppost = new HttpPost("XXXXX.XXX.XXXXXX.XXX/XX/XXXXXXX/XX/XXXXXXX/XXXXXXX");
RequestConfig requestConfig = py(RequestConfig.DEFAULT)
.setProxy(new HttpHost("XXX.XXX.XXX.XXX", 8080))
.build();
httppost.setConfig(requestConfig);
httppost.addHeader("Content-Type","data/binary");
File file = new File("C:/Users/XXXXXX/");
MultipartEntityBuilder builder = ate();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addBinaryBody("batch", file);
final HttpEntity entity = builder.build();
httppost.setEntity(entity);
System.out.println("executing request " + RequestLine() + Config());
HttpResponse response = ute(httppost);
HttpEntity resEntity = Entity();
System.out.StatusLine());
if (resEntity != null) {;
System.out.String(resEntity));
}
httpclient.close();
}
}
我遇到的问题是,它不提供相同的反应,好像是没有要发布的⽂件。
2016-10-03
curl命令发送post请求带参数
Charabon
+0
'--data-binary'意味着'-X POST',所以你不需要给出-X'选项,它也暗⽰'Content-Type:application/x-www- form-urlencoded“(参见[curl manpage](curl.haxx.se/docs/manpage.html#-d)),但是你的Java代码正在发送'Content-Type:data/binary',它是可能是你的问题。⾄于*“不提供相同的答复”*,如果您与我们分享这两个答复,那么帮助您会更容易。 –
+0
成功的回应=批次编号-XXXXX 错误的响应=批次为空 –
+0
我的意思是,显⽰完整响应,包括标题。⽆论如何,我只注意到你的Java代码也发送⽂件为*多部分*。你似乎有'curl'命令是“上传”⽂件的想法。不是这样。它只是将⽂件作为表单编码的POST内容发送到服务器,这意味着该⽂件应该遵循该内容格式。你只需要在Java中设置正确的“Content-Type”,并直接对⽂件内容进⾏流式处理。 –

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。