Aru*_*run 9 java rest client http-headers
我有以下用于调用rest调用的代码片段.我有大约8个标题要传递给这个休息电话.但问题是难以管理.如果以后标题列表增加,我需要更改evaluateChange方法签名以包含附加标题作为方法params.
@Path("/v1/restclienturi/")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public interface RestClient {
@POST
@Path("/samplecall/evaluate")
Response evaluateChange(
@HeaderParam("HEADER1") String header1,
@HeaderParam("HEADER2") String header2,
@HeaderParam("HEADER3") String header3,
@HeaderParam("HEADER4") String header4,
@HeaderParam("HEADER5") String header5,
@HeaderParam("HEADER6") String header6,
@HeaderParam("HEADER7") String header7,
@HeaderParam("HEADER8") String header8,
@Context HttpServletResponse response, Request request);
}
Run Code Online (Sandbox Code Playgroud)
请提供您的想法或代码段以适应这一点.
我尝试了以下代码片段,但它不起作用(其中headerMap包含其中的所有8个标头):
@Path("/v1/restclienturi/")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public interface RestClient {
@POST
@Path("/samplecall/evaluate")
Response evaluateChange(
@RequestHeader Map<String, String> headerMap,
@Context HttpServletResponse response, Request request);
}
Run Code Online (Sandbox Code Playgroud)
我找到了使用 javax.ws.rs.core.Form 的解决方案:
@Path("/v1/restclienturi/")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public interface RestClient {
@POST
@Path("/samplecall/evaluate")
Response evaluateChange(
@Form MyHeader headers,
@Context HttpServletResponse response, Request request);
}
Run Code Online (Sandbox Code Playgroud)
以下是 MyHeader,它是一个 pojo:
public class MyHeader{
@HeaderParam("HEADER1")
private String header1;
@HeaderParam("HEADER2")
private String header2;
.....
// getters and setters present
}
Run Code Online (Sandbox Code Playgroud)
实例化 MyHeader 并设置值以将其传递到 REST 服务,例如:
MyHeader headers = new MyHeader();
headers.setHeader1("HEADER1_VALUE");
...
Run Code Online (Sandbox Code Playgroud)
并致电:evaluateChange(headers, null,request);
问题: 这种方法的一个非常大的问题是,每次添加新标头时,我们都需要更改代码来设置和获取值。如果解决方案类似于作为集合传递,那么在添加新标头时我们不会涉及代码更改。喜欢:
Map<String,String> headersMap = new HashMap();
headers.put("HEADER1","HEADER1_VALUE");
....
evaluateChange(headersMap,null,request);
Run Code Online (Sandbox Code Playgroud)
我正在寻找这样的解决方案。但上面的代码没有工作。寻找建议。
| 归档时间: |
|
| 查看次数: |
2922 次 |
| 最近记录: |