Java HTTP Request with Token Authentication

10,545

Solution 1

It turns out this issue was caused by including the con.setDoOutput(true); as get requests do not include a body.

Solution 2

try this con.setRequestProperty("Authorization", "Bearer " + token);

Share:
10,545
Ron95
Author by

Ron95

Updated on July 17, 2022

Comments

  • Ron95
    Ron95 almost 2 years

    I am trying to make a GET request to a local server I have running. I am having trouble returning the correct data, I am seeing an 'Unauthorized' response. Can anyone spot any glaring issues with this given that the String 'token' is correct.

        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;
    

    }*

    I was able to get a curl request working from the command line:

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