java - 与 Jersey 客户端发送多部分请求

标签 java rest jersey client multipartform-data

我正在尝试用 Java 编写一个客户端以从 RESTful Web 服务获取数据。我已经看过几个教程和视频,但有一些我不明白的地方。让我从这个开始。我能够使用 PEST 在 PHP 中编写客户端以获得成功的响应。这是如何发出请求的示例:

<?php
    require_once('vendor\educoder\pest\Pest.php');

    $sourceCredentials = array(
        "SourceName" => 'username',
        "Password" => 'password',
        "SiteID" => siteID);


    $params = array(
        "ResponseFormat" => 'JSON',
        "ResponseDetial => 'Full'");

    $request = array_merge(array("SourceCredentials"=>$sourceCredentials),$params);

    $pest = new Pest('https://api.something.com');

    $results = json_decode($pest->post('ClientService/GetClients',$request));

    $clients = $results->Clients;

我发现了一些尴尬的事情,我对 RESTful 客户端不太熟悉。由于某种原因,该网站使用 POST 请求而不是 GET 请求。凭证作为表单数据以及任何查询参数在正文中传递。我看过的教程不是这样设置的。我不知道如何使用 Jersey 在 Java 中编写此请求。任何人都可以给我一些关于使用 Jersey-client 设置此请求的指示吗?

enter image description here

最佳答案

Postman 中的

form-data 用于 multipart/form-data。为此,您需要使用 multipart module与 Jersey 客户。就代码而言,您只需执行类似的操作

Client client = ClientBuilder.newBuilder()
         .register(MultiPartFeature.class)
         .build();
FormDataMultiPart multiPart = new FormDataMultiPart()
        .field("SourceCredentials[SourceName]", "...")
        .field("ResponseFormat", "JSON")
        .field("...", "...");
Response response = client.target(url)
        .request()
        .header("...", "...")
        .post(Entity.entity(multiPart, multiPart.getMediaType());

并确保您具有多部分依赖项。

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version${jersey2.version}</version>
</dependency>

关于java - 与 Jersey 客户端发送多部分请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51452286/

相关文章:

java - GWT 多分页(最好/最简单的方法)

java - 使用 Java 解码来自 Bing Translate 的 REST 响应

java - 传递不正确的媒体类型时无法捕获 WebApplicationException

tomcat - 保护 REST Jersey

java - 为什么我在 Jersey REST API 上发布 POST 时收到 500 响应?

具有两个数组的 Java 到 Mips

java.io.IOException : Connection reset by peer' when using AsyncRestTemplate on weblogic server

java模拟

Restful api 和搜索、邀请等操作

python - 使用 Python 向 RESTful API 发出请求