我正在尝试用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设置此请求的提示?
答案 0 :(得分:1)
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>