如何正确下载PDF作为服务器响应

时间:2019-05-11 23:49:51

标签: java rest http pdf curl

我需要有关如何保存PDF文件的正确方法的帮助。我使用Java 11中的HttpClient。我在服务器上发送授权请求,然后从服务器获得content-type = [application / pdf]响应。但是,当我将响应另存为PDF时,PDF文件为空。我认为PDF的结构还可以,因为它有4个空白页面。当我打开PDF文件代码时,它充满了问号和随机字符。

它看起来像这样:

%PDF-1.4
%����
3 0 obj
<</ColorSpace/DeviceGray/Subtype/Image/Height 59/Filter/FlateDecode/Type/XObject/Width 250/Length 2527/BitsPerComponent 8>>stream
x��[{XUU���(��Lㄓ9>�F�h|���3Q1�1�tr�ѱ�JEE ˴Q���F��ŗѧ�O4)h|K6 >y�)��眵��{�}�9��K��ǽ�Zk��;���Z�\-�_%����fvaiUMեo��]7����"_s�.�p�pJ���y�t�g�Q�5����k6D���VP����Cl��>o��eӣ�?M�Fh���lrL�n�8��@����F�wΎ�i�s�,��jӢO�Y�(�ٱ6)�&�Vӎ���F���������� ����>�5OM�=��W]M]y�^�$u���E�Nl���z��R� qԇvMA����W�?�]�h���c����R��"��sV��ĐШ)/��MYT2w}�4�����a_oa�qd�n�~UY�ի6
o�������OO���Jw
...
...
...
0001204416 00000 n 
0001204779 00000 n 
0001205451 00000 n 
0001205497 00000 n 
trailer
<</Info 33 0 R/ID [<649ae65d919544aa64f7a389364ee40b><e69ed04604543e762e4be5cfb2db490f>]/Root 32 0 R/Size 34>>
startxref
1205620
%%EOF

我的课看起来像这样:

public class Test_pdf {
    public static void main(String[] args) throws IOException, InterruptedException {
        HttpClient httpClient = HttpClient.newBuilder()
                .version(HttpClient.Version.HTTP_2)
                .build();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://example.com/client/clientnumber/ident-pdf"))
                .GET()
                .header("Authorization", "Bearer 123456789")
                .build();

        HttpResponse<Path> response = httpClient.send(request, HttpResponse.BodyHandlers.ofFile(Paths.get("C:\\test.pdf")));
    }
}

我尝试使用以下字节数组:

        HttpResponse<byte[]> response = httpClient.send(request, HttpResponse.BodyHandlers.ofByteArray());

        File file = new File("C:\\test.pdf");

        OutputStream os = new FileOutputStream(file);

        os.write(response.body());
        System.out.println("Successfully");

        os.close();

我尝试使用cURL命令直接下载文件,但是文件存在相同的问题。

curl -v -N https://example.com/client/clientnumber/ident-pdf ^ -H "Authorization: Bearer 123456789" --output test.pdf

这是我第一次处理PDF文档。我会在代码中错过一些编码吗?还是PDF错误的原因是什么?

谢谢。

0 个答案:

没有答案