【问题标题】:Downloading a file using a REST POST call in java在 java 中使用 REST POST 调用下载文件
【发布时间】:2013-10-17 03:20:30
【问题描述】:

我有一个 REST 服务,当它通过一个 XML 文件作为参数的 POST 调用调用它时,它会返回一个文件。我的目标是使用客户端访问服务(java 类中的简单 httppost 调用)。到目前为止,我正在执行以下操作:

    DefaultHttpClient defaultHtppclient = new DefaultHttpClient();
    HttpPost postRequest = new HttpPost("resturl");
    StringEntity input = new StringEntity("input xml file ");
    input.setContentType("application/xml");
    postRequest.setEntity(input);
    HttpResponse response = defaultHtppclient.execute(postRequest);                           

当我使用以下方法转换响应时,我正在获取文件的内容:

String content = EntityUtils.toString(response.getEntity());

但我正在努力从 java 类中下载文件。当我在 Firefox HTTP 资源测试中触发 URL 时。我得到的标题是:

Content-Disposition: attachment; filename = filenameFromserver
Content-Type: application/octet-stream

有没有办法从客户端下载文件?

【问题讨论】:

    标签: java xml rest post content-disposition


    【解决方案1】:

    您正在进行的调用期待应用程序/xml,服务器正在向您发送八位字节流。

    您必须读取它发送给您的字节并将它们写到您想要的文件中。我建议搜索一下如何读取八位字节流。

    例如,看看这篇文章:

    Reading binary file from URLConnection

    【讨论】:

    • 所以,文件不能直接下载?可能是我转储了,但是如果我正确设置内容类型,文件会自动下载吗?
    • 那么你是什么意思自动下载,它给你发回一个流,你需要获取那个流并用它做一些事情,无论是将它写入文件,创建一个java对象,等等。
    • 好吧,一个简单的文件,可能就够了,我担心有时候服务器返回的文件可能是jar文件,那我们该怎么办呢?
    • 读取传入字节
    • 只是澄清一下,当我们在浏览器中访问某些 url 时,有一个选项可以通过弹出下载文件,我期待使用 java 时相同。即,当我运行程序时,可以文件保存在程序中提到的路径中?
    猜你喜欢
    • 2017-11-16
    • 1970-01-01
    • 2017-04-02
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    相关资源
    最近更新 更多