首页 > 解决方案 > 使用 unirest 库在 Post 请求中将文件作为表单数据正文发送

问题描述

我正在尝试使用 unirest 库在 post 请求中完成发送文件。这是邮递员的工作卷曲:

curl --location --request POST 'https://k9.testing.rs/api/org/v1/invoice/send/file?pibSender=105622807&pibReceiver=106946734&contactName=Nenad&contactEmail=something@gmail.com' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBiODA1ZmE5Zjc2ZjUyY2QzMTVmNmIyZDc2NDVlMmVmNzRhMzdmNjhiNDA1NWM5MjFjMTM5NzFlYzcyMmFkODc1ZTY1YTQxMmE1ZTQwMzYyIn0.eyJhdWQiOiIxIiwianRpIjoiMGI4MDVmYTlmNzZmNTJjZDMxNWY2YjJkNzY0NWUyZWY3NGEzN2Y2OGI0MDU1YzkyMWMxMzk3MWVjNzIyYWQ4NzVlNjVhNDEyYTVlNDAzNjIiLCJpYXQiOjE2MTY3ODI1OTgsIm5iZiI6MTYxNjc4MjU5OCwiZXhwIjoxNjQ4MzE4NTk4LCJzdWIiOiIxIiwic2NvcGVzIjpbXSwidXNlcm5hbWUiOiJqb3ZhbmEudGVzdDExN0BwYXJhZ3JhZi5ycyJ9.HUk-r0SPs99Ty9_PJO11ytao0C0uZ6R1mhn2kgnwrf-dNJryp975uNumPhxUqRDmEJXrGvXg9JYkV55N00-Cn9rTI9S-Y8s-e8jN12sUC4hlT6nJz4ABXJqPPAz-pVbwJ0qC48zp6Xov1IZYBQEskQQsIbvLrrG6sxSZg-iPn-FAtKXYOql-sY0R8ZCNJWOpaZBknh4YmX-g4a5xNkZJnmqf2fpUM3D4KzfxuLry95dqih0Gi17zJqSCfjpwzLBvkdiSesgeYNLYIEAPNi4Tf-68i1kyYz-i4XnagQlBb0YHCtgEMyxiS9IuueFON4V4BN6WUWYuYhtAFWzUE7S1oW-pfQMqY-0Fn7KrtaMdUcSlodpCTYqzoosDg1u_i20O37jD044Z7AWH6-IJfWqo2rziWHPW9s-_94dExJF1V6N-NRbK2QPh2H8LzmQIM2kcoYo-jikmAY3EPJj4-6rniopzon4gwKH7F_xoOiwtT1-sMIeh-3KtVVYoH3tMv5eRojA4EG-xWw3UPwfGwqPBnuzn2B6K_3gmtpmT0sDTtr7ljfJywZOeMDWf16vVVm_DEjnUR56OU_HPSFkUqKRdyi0LUOrQzxrNHgfVsWtB85FWIpvGEWSCTJi2YiADpM5N0JAHSCfqK3e3hp3U8OwipQTKKWexXaaGU-fYjzTXWNc' \
--header 'Cookie: session=wprR8vrO0Gq0aN0wk7Mf1H5bC2TYMJzKXsOYRfPB' \
--form 'file=@"someFile.pdf"'

我尝试了基本示例,但没有成功,每次我收到请求中不存在文件的响应时(当正文中没有文件时,这与邮递员的响应相同)。如何用 unirest 来实现这一点,应该很简单。

这是我尝试过的,但它不起作用:

CompletableFuture<HttpResponse<SendInvoiceResponse>> future = Unirest.post("https://k9.test.rs/api/org/v1/invoice/send/file")
                        .header("accept", "application/json")
                        .header("Content-Type", "application/pdf")
                        .header("Authorization", "Bearer " + token)
                        .queryString("senderPib", "105622807")
                        .queryString("receiverPib", "106946734")
                        .queryString("contactName", "test")
                        .queryString("contactEmail", "test@gmail.com")
                        .field("file", new File(filePath))
                    .asObjectAsync(SendInvoiceResponse.class, new Callback<SendInvoiceResponse>() {      
                       public void failed(UnirestException e) {
                           logger.info("The request has failed");
                       }
     
                       public void completed(HttpResponse<SendInvoiceResponse> response) {
                           int code = response.getStatus();
                           Headers headers = response.getHeaders();
                           SendInvoiceResponse body = response.getBody();
                       }
     
                       public void cancelled() {
                           logger.info("The request has been cancelled");
                       }
                });

标签: postmultipartform-dataunirest-java

解决方案


推荐阅读