使用 Jersey Client 发送多部分请求
Sending Multipart request with Jersey Client
我正在尝试在 Java 中编写客户端以从 RESTful 网络服务获取数据。我看过几个教程和视频,但有些东西我不明白。让我从这个开始。我能够使用 PEST 编写一个 clientin 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 设置此请求的指示?
Postman 中的表单数据用于 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 中编写客户端以从 RESTful 网络服务获取数据。我看过几个教程和视频,但有些东西我不明白。让我从这个开始。我能够使用 PEST 编写一个 clientin 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 设置此请求的指示?
Postman 中的表单数据用于 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>