[英]Adding multiple headers while calling REST api via Jersey clients
我正在尝试添加多个标题。 但至今都惨败。 我尝试了很多代码调整但失败了。 有人可以帮我修复代码或至少告诉我出了什么问题吗?
头映射代码:
Map<String, String> headers = new HashMap<String, String>();
headers.put("authorization", authToken);
headers.put("API-Version", apiVersion);
headers.put("Content-Type", MediaType.APPLICATION_JSON);
实际调用代码:
String serviceUrl = serviceHostUrl;
Client client = Client.create();
WebResource webResource = client.resource(serviceUrl).path(path);
WebResource.Builder builder = webResource.getRequestBuilder();
if(headers != null && !headers.isEmpty()) {
for(Map.Entry<String, String> entry : headers.entrySet()) {
builder.header(entry.getKey(), entry.getValue());
}
}
ClientResponse response = builder.post(ClientResponse.class, input);
更新
如果在第二个片段中我使用下面的代码而不是在循环中设置标题,它工作正常。 这真的很奇怪。
builder.header("authorization", "Basic SDFSFSDFSDFSDFSDFSDFSDF");
builder.header("API-Version", "5.2");
builder.header("Content-Type", MediaType.APPLICATION_JSON);
我认为这里的问题是,您尝试访问的 MAP 类型。
Map<String, Object> headers = new HashMap<String, Object>();
WebSource 构建器接受 header(String,Object)。 所以尝试改变地图类型。
基本身份验证类似于: Authorization = "Authorization" ":" 凭据
一个例子
byte[] loginBytes = ("1" + ":" + "1").getBytes();
StringBuilder authString = new StringBuilder().append("Basic ")
.append(Base64.encodeToString(loginBytes, Base64.NO_WRAP));
_headers.put("Authorization", authString );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.