2017-08-02 86 views
0

我知道GET調用不應該有body,但是調用是由其他人開發的,現在我不能改變它。我想要消費一個API,它是GET方法並且帶有有效載荷(json body)。我可以使用傳遞路徑參數但不包含有效載荷的GET方法。我沒有看到爲GET調用發送有效內容的選項。如何使用JAX-RS客戶端通過GET調用發送有效載荷?

這是我正在做的GET調用。

import javax.ws.rs.client.Client; 
import javax.ws.rs.client.ClientBuilder; 
import javax.ws.rs.client.Entity; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 

Client client = ClientBuilder.newClient(); 
String targetUri = "http://" + service.getHost() + ":" + service.getPort() + PROFILES_URI; 
Response response = client 
      .target(target) 
      .path(profileIds.get(0)) 
      .request(MediaType.APPLICATION_JSON) 
      .get(); 

如果方法是PUT或POST,我可以發送如下所示的有效載荷。

Client client = ClientBuilder.newClient(); 
String target = "http://" + service.getHost() + ":" + service.getPort() + PROFILES_URI; 
Response response = client 
      .target(target) 
      .request(MediaType.APPLICATION_JSON) 
      .post(Entity.entity(profileIds, MediaType.APPLICATION_JSON)); 

如何使用GET調用發送有效載荷?

參考:http://www.baeldung.com/jersey-jax-rs-client

+1

GET調用不能有身體。 – Gusman

+1

GET請求不能有有效負載。 – SLaks

+2

您需要執行POST – OldProgrammer

回答

2

我不是開發一個REST調用這裏

其實你是,因爲javax.ws.rs是在Java和javax.ws.rs.client.Client RESTful Web服務基礎包是爲基本接口REST滿Web服務客戶端:Overview of the Client API

這就是說你可能需要建立你自己的客戶端,它允許你在GET請求中發送一個有效載荷或者找到一個具有這種能力的現存的web服務客戶端。

在GET請求發送體的正確性實際上是在這個問答&一個已經討論不同的主題:HTTP GET with request body

相關問題