将标头添加到HttpGet请求

时间:2015-10-01 21:15:19

标签: java android get http-headers

我试图返回一个需要为每个请求设置标头的json get API调用,我试图将addHeader()参数附加到我的请求但是这似乎不起作用并且每次都返回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();
}

2 个答案:

答案 0 :(得分:0)

使用addHeader()方法似乎没有任何问题,我会尝试调试并分析请求以检查您使用的标头和地址是否正确。

HTTP 400表示请求格式错误,如果我不得不猜测我说你正在使用的地址/标题正在设置但不是网络服务器所期望的。

答案 1 :(得分:0)

您的服务器可能需要使用base64编码进行身份验证。您可以在浏览器中测试您的请求。试试 Postman。