将 header 添加到 HttpGet 请求
Adding header to HttpGet request
我正在尝试 return json get API 调用,需要为每个请求设置 header,我试图附加 addHeader( ) 参数添加到我的请求中,但这似乎不起作用并且每次都出现 return 400 错误,我是否缺少任何其他参数或应该使用其他参数?任何帮助都会大有帮助,谢谢!
public String getJSON(String address, String header) {
StringBuilder builder = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(address);
if(header != null){
httpGet.addHeader("Authorization", "Bearer " + header);
}
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} else {
errorCode = statusCode;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
e.getMessage();
} catch (IOException e) {
e.printStackTrace();
e.getMessage();
}
return builder.toString();
}
您对 addHeader() 方法的使用似乎没有任何问题,我会尝试调试和分析请求以检查您使用的 header 和地址是否正确。
HTTP 400 表示请求格式错误,如果我不得不猜测,我会说您正在使用的 address/header 正在设置,但不是网络服务器所期望的。
可能您的服务器需要使用 base64 编码进行身份验证。您可以在浏览器中测试您的请求。试试 Postman。
我正在尝试 return json get API 调用,需要为每个请求设置 header,我试图附加 addHeader( ) 参数添加到我的请求中,但这似乎不起作用并且每次都出现 return 400 错误,我是否缺少任何其他参数或应该使用其他参数?任何帮助都会大有帮助,谢谢!
public String getJSON(String address, String header) {
StringBuilder builder = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(address);
if(header != null){
httpGet.addHeader("Authorization", "Bearer " + header);
}
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} else {
errorCode = statusCode;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
e.getMessage();
} catch (IOException e) {
e.printStackTrace();
e.getMessage();
}
return builder.toString();
}
您对 addHeader() 方法的使用似乎没有任何问题,我会尝试调试和分析请求以检查您使用的 header 和地址是否正确。
HTTP 400 表示请求格式错误,如果我不得不猜测,我会说您正在使用的 address/header 正在设置,但不是网络服务器所期望的。
可能您的服务器需要使用 base64 编码进行身份验证。您可以在浏览器中测试您的请求。试试 Postman。