[英]How to mockup in Java POJO calling JAX-RS Web service with @OPTIONS annotation
我希望在RESTful WS @OPTION批注中使用它作為幫助。 我在http://www.programcreek.com/java-api-examples/index.php?source_dir=AIDR-master/aidr-output/src/main/java/qa/qcri/aidr/output/getdata中找到了一個代碼段/GetBufferedAIDRData.java 。 有一段代碼:
@OPTIONS
@Produces(MediaType.APPLICATION_JSON)
@Path("/channel/filter/{crisisCode}")
public Response getBufferedAIDRDataPostFilter(@PathParam("crisisCode") String channelCode,
@QueryParam("callback") String callbackName,
@DefaultValue("1000") @QueryParam("count") int count) {
return Response.ok()
.allow("POST", "GET", "PUT", "UPDATE", "OPTIONS", "HEAD")
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Credentials", "true")
.header("Access-Control-Allow-Methods", "POST, GET, PUT, UPDATE, OPTIONS, HEAD")
.header("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With")
.build();
}
但是我沒有發現,如何從上面的客戶端定義中調用並獲取標頭等的內容。
由於您在JaxRS REST API實現中發布了該代碼段,因此下面提供的我的解決方案也是JaxRS Client實現。 可以根據需要使用任何框架以任何語言實現該功能。
以下是一個代碼片段,用於在REST API端點上調用OPTIONS請求並處理其響應。
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;
import java.util.List;
import java.util.Map;
public class RestClient {
public static void main(String[] args) {
Client client = ClientBuilder.newBuilder().build();
WebTarget target = client.target("https://<api-base-url>/<resource-path>");
Response response = target.request().options();
Map<String, List<String>> headerMap = response.getStringHeaders();
for (String key : headerMap.keySet()) {
List<String> values = headerMap.get(key);
for (String value : values) {
// The header and its corresponding value can be processed as per the case.
}
}
// This will return a list of all supported HTTP Methods (GET, POST, PUT, ..., etc)
List<String> httpMethods = headerMap.get("Allow");
for (String method : httpMethods) {
if ("GET".equals(method)) {
// Do something
}
if ("POST".equals(method)) {
// Do something
}
...
...
}
response.close();
}
}
Response類可能公開了更多方法,可以根據實現需要進行探索。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.