带有令牌认证的Java HTTP请求

时间:2017-10-25 00:45:03

标签: java curl http-headers http-token-authentication

我正在尝试向我运行的本地服务器发出GET请求。我无法返回正确的数据,我看到了一个未经授权的'响应。鉴于String'令牌,任何人都可以发现任何明显的问题。是对的。

    protected Object doInBackground(Void... params) {
        try {
            String url = "http://192.168.0.59:8000/events/";
            URL object = new URL(url);
            HttpURLConnection con = (HttpURLConnection) object.openConnection();
            con.setDoOutput(true);
            con.setDoInput(true);
            con.setRequestMethod("GET");
            con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            con.setRequestProperty("Accept", "application/json");
            con.setRequestProperty("Authorization:", "Token " + token);

            //Display what the GET request returns
            StringBuilder sb = new StringBuilder();
            int HttpResult = con.getResponseCode();
            if (HttpResult == HttpURLConnection.HTTP_OK) {
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(con.getInputStream(), "utf-8"));
                String line = null;
                while ((line = br.readLine()) != null) {
                    sb.append(line + "\n");
                }
                br.close();
            } else {
                System.out.println(con.getResponseMessage());
            }
        } catch (Exception e) {
            Log.d("Uh Oh","Check your network.");
            return false;
        }
        return false;

} *

我能够从命令行获得一个curl请求:

curl -H "Authorization: Token token" http://0.0.0.0:8000/events/

2 个答案:

答案 0 :(得分:0)

事实证明,这个问题是由con.setDoOutput(true);引起的,因为获取请求不包含正文。

答案 1 :(得分:0)

尝试一下 con.setRequestProperty(“ Authorization”,“ Bearer” +令牌);