我正在尝试用 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 设置此请求的指示吗?
最佳答案
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/