簡體   English   中英

如何在Java POJO中使用@OPTIONS批注來調用JAX-RS Web服務的模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM