5

I am using OKHTTP3 to make a POST request to my server code. It returns 401 UNAUTHORIZED error. However, the same thing works on POSTMAN. The only difference between POSTMAN and my code may be a session cookie (which I am passing as a header). Below is my code

import java.io.*;
import java.net.*;
import java.util.HashMap;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import okhttp3.*;
import org.json.JSONObject;

public class Main
{


  public static final String SESSION_URL = "http://localhost:8080/security/rest/token/access/session/0";
  public static final String CREATE_PROJECT_URL = "http://localhost:8080/managers/CDQRuntime/smartdq/training/";
  public static String PROJECT_NAME = "testproject201234";
  static String MANAGEMENT_TOKEN="YWRtaW46YWRtaW4=";
  public static void main(String[]args) throws IOException
  {
    //Get session api call
    Request request = new Request.Builder()
            .url(SESSION_URL)
            .get()
            .addHeader("Authorization", "Basic " + MANAGEMENT_TOKEN)
            .build();
    OkHttpClient client=new OkHttpClient();
    Response response = client.newCall(request).execute();
    String serverResponse = response.body().string();
    System.out.println(serverResponse);
    JSONObject responseMap = new JSONObject(serverResponse);
    System.out.println(responseMap);
    String accessToken=(String)responseMap.get("access_token");
    System.out.println(accessToken);




    //Create Project api call
    JSONObject createProjectCallBody = new JSONObject();
    MediaType JSON = MediaType.parse("application/json");
    createProjectCallBody.put("projectState","Initial");
    createProjectCallBody.put("projectName", PROJECT_NAME);
    createProjectCallBody.put("projectDescription","this is a test");
    RequestBody body = RequestBody.create(JSON, createProjectCallBody.toString());
        request = new Request.Builder()
            .url(CREATE_PROJECT_URL)
            .post(body)
            .addHeader("Authorization","Bearer "+accessToken)
            .addHeader("Content-Type","application/json").
                addHeader("SESSION", responseMap.get("session").toString())
            .build();
        System.out.println(request.headers().toString());

    client=new OkHttpClient();

    response = client.newCall(request).execute();
    System.out.println(response);




  }

  private static Map<String, Object> getStringObjectMap(String content)
  {
    return new Gson().fromJson(
              content, new TypeToken<HashMap<String, Object>>() {}.getType()
      );
  }

}

Below is the link to working postman response

authoriation and other headers in POSTMAN request Here is the body in postman Body sent in the POSTMAN request

After the various Sys outs, below is the console log, which shows the code is failing on the second api call, the token extracted from first response is correct

{"access_token":"eyJjdHkiOiJKV1QiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..LppdczJz8iUazAT1MXF7wg.vu6sPxXGhvWUjujS8u67zfYSF9zWWXibsk8iyiDag3kXT63Q_fMVusPyIJWabbS-Aa3OS_jcWMI8veKu2kIKC_fTGn2VjfU4Rs4Gt4L95PnJnmeH11AxJi2z9Lq_dw35hVWQBWJZjhucihvb7A5p0z7vroa-5boeXHUJPg1qcfL_9S8ab91hIy2aBry4h_QSqOXp1hD22pE7KcrRFnbc3JoDhnoL9iBZQXXiUXyw9Cvce8krIkeD7_aZCIF7NVz66xZ9WKly3-OQDvR94EG4rTwAPAo8z2Zc6ioQSSdQWvXhij5V97Pjk4UPjHBP1kJxhC2y-aPfMBjnWZ0lhXtb7CfSsDwVKUl7egczsaL4-CQ3a_u9ptpDoXwXvQCTLChRbGkxaV4Lmhm7jbwaHo00xHpUP2XlPnaj7wNtqWDxZwJOUk5GVy4qGlnqpMhyJ-0YONcBxSOIcxSSZGR95h_ceiMHF4f2XDmosv-iIBvl8NuX_VC_atlsJ1_6DRPCFDR-X-p3oKWaLgwtH1JGv5F-bo9SeM6EeV9AE5PEweabiN9UtI72zuQKtiCa-1p690yWqK7F-CmZTNij4EZV7knleHoDdQ3SZhNPFnuybkq-0v8JJM2bPlkfzmxhSLIOzY87BcynHIVBPcXFt5FvBvFvzSKd1nhYMynfzuOsrq90Q3f-6k9WKvHAYhpJKNAkhGNWs11jgHAUrPS85Yub3kLEHMICunOKtVgwTSsjmkpMfd6QskIpdc17WWzCXg7XiKeCzNFyDpP6KNzQ0mHqw59ou0XMVByLZwDAeZIe00ix3kqVyI3o9ZIz0hZT5gs3OHzHDLOlYzq0TUB9qI3iucotmLgrX_nHP_FoR1wSmhe0xDnVQxWMRJksiu82cwyIqXtcMREMkn5Wyl4R5njfbickT-cpZ5Ru4v9twF2KAKknjDArNg7vyFbZEK9_TUsaLJzzF6N8-XOvWoibavCbeFXxd7fMaxTkMVYukNk1nXJOJQs_qPBL7ipJ3aMRBLofOF25Nf2KtSTaKC5COjOY0DrKaZ-FgNgN45S1NA45Ii4y-7BS40f7nrwruBM7SkFEZ5U_YtWMevKqKXvB12oj8WLRHmMtPYseLGBNSAS-QSZMYqZK3x36vGeTbVRdxlQ8UsjN.H8gItdZ6gh4z4g82KIDMbQ","session":"64b9f9c9-e994-474f-8106-bdbe22845dfd","username":"admin"}
{"access_token":"eyJjdHkiOiJKV1QiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..LppdczJz8iUazAT1MXF7wg.vu6sPxXGhvWUjujS8u67zfYSF9zWWXibsk8iyiDag3kXT63Q_fMVusPyIJWabbS-Aa3OS_jcWMI8veKu2kIKC_fTGn2VjfU4Rs4Gt4L95PnJnmeH11AxJi2z9Lq_dw35hVWQBWJZjhucihvb7A5p0z7vroa-5boeXHUJPg1qcfL_9S8ab91hIy2aBry4h_QSqOXp1hD22pE7KcrRFnbc3JoDhnoL9iBZQXXiUXyw9Cvce8krIkeD7_aZCIF7NVz66xZ9WKly3-OQDvR94EG4rTwAPAo8z2Zc6ioQSSdQWvXhij5V97Pjk4UPjHBP1kJxhC2y-aPfMBjnWZ0lhXtb7CfSsDwVKUl7egczsaL4-CQ3a_u9ptpDoXwXvQCTLChRbGkxaV4Lmhm7jbwaHo00xHpUP2XlPnaj7wNtqWDxZwJOUk5GVy4qGlnqpMhyJ-0YONcBxSOIcxSSZGR95h_ceiMHF4f2XDmosv-iIBvl8NuX_VC_atlsJ1_6DRPCFDR-X-p3oKWaLgwtH1JGv5F-bo9SeM6EeV9AE5PEweabiN9UtI72zuQKtiCa-1p690yWqK7F-CmZTNij4EZV7knleHoDdQ3SZhNPFnuybkq-0v8JJM2bPlkfzmxhSLIOzY87BcynHIVBPcXFt5FvBvFvzSKd1nhYMynfzuOsrq90Q3f-6k9WKvHAYhpJKNAkhGNWs11jgHAUrPS85Yub3kLEHMICunOKtVgwTSsjmkpMfd6QskIpdc17WWzCXg7XiKeCzNFyDpP6KNzQ0mHqw59ou0XMVByLZwDAeZIe00ix3kqVyI3o9ZIz0hZT5gs3OHzHDLOlYzq0TUB9qI3iucotmLgrX_nHP_FoR1wSmhe0xDnVQxWMRJksiu82cwyIqXtcMREMkn5Wyl4R5njfbickT-cpZ5Ru4v9twF2KAKknjDArNg7vyFbZEK9_TUsaLJzzF6N8-XOvWoibavCbeFXxd7fMaxTkMVYukNk1nXJOJQs_qPBL7ipJ3aMRBLofOF25Nf2KtSTaKC5COjOY0DrKaZ-FgNgN45S1NA45Ii4y-7BS40f7nrwruBM7SkFEZ5U_YtWMevKqKXvB12oj8WLRHmMtPYseLGBNSAS-QSZMYqZK3x36vGeTbVRdxlQ8UsjN.H8gItdZ6gh4z4g82KIDMbQ","session":"64b9f9c9-e994-474f-8106-bdbe22845dfd","username":"admin"}
eyJjdHkiOiJKV1QiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..LppdczJz8iUazAT1MXF7wg.vu6sPxXGhvWUjujS8u67zfYSF9zWWXibsk8iyiDag3kXT63Q_fMVusPyIJWabbS-Aa3OS_jcWMI8veKu2kIKC_fTGn2VjfU4Rs4Gt4L95PnJnmeH11AxJi2z9Lq_dw35hVWQBWJZjhucihvb7A5p0z7vroa-5boeXHUJPg1qcfL_9S8ab91hIy2aBry4h_QSqOXp1hD22pE7KcrRFnbc3JoDhnoL9iBZQXXiUXyw9Cvce8krIkeD7_aZCIF7NVz66xZ9WKly3-OQDvR94EG4rTwAPAo8z2Zc6ioQSSdQWvXhij5V97Pjk4UPjHBP1kJxhC2y-aPfMBjnWZ0lhXtb7CfSsDwVKUl7egczsaL4-CQ3a_u9ptpDoXwXvQCTLChRbGkxaV4Lmhm7jbwaHo00xHpUP2XlPnaj7wNtqWDxZwJOUk5GVy4qGlnqpMhyJ-0YONcBxSOIcxSSZGR95h_ceiMHF4f2XDmosv-iIBvl8NuX_VC_atlsJ1_6DRPCFDR-X-p3oKWaLgwtH1JGv5F-bo9SeM6EeV9AE5PEweabiN9UtI72zuQKtiCa-1p690yWqK7F-CmZTNij4EZV7knleHoDdQ3SZhNPFnuybkq-0v8JJM2bPlkfzmxhSLIOzY87BcynHIVBPcXFt5FvBvFvzSKd1nhYMynfzuOsrq90Q3f-6k9WKvHAYhpJKNAkhGNWs11jgHAUrPS85Yub3kLEHMICunOKtVgwTSsjmkpMfd6QskIpdc17WWzCXg7XiKeCzNFyDpP6KNzQ0mHqw59ou0XMVByLZwDAeZIe00ix3kqVyI3o9ZIz0hZT5gs3OHzHDLOlYzq0TUB9qI3iucotmLgrX_nHP_FoR1wSmhe0xDnVQxWMRJksiu82cwyIqXtcMREMkn5Wyl4R5njfbickT-cpZ5Ru4v9twF2KAKknjDArNg7vyFbZEK9_TUsaLJzzF6N8-XOvWoibavCbeFXxd7fMaxTkMVYukNk1nXJOJQs_qPBL7ipJ3aMRBLofOF25Nf2KtSTaKC5COjOY0DrKaZ-FgNgN45S1NA45Ii4y-7BS40f7nrwruBM7SkFEZ5U_YtWMevKqKXvB12oj8WLRHmMtPYseLGBNSAS-QSZMYqZK3x36vGeTbVRdxlQ8UsjN.H8gItdZ6gh4z4g82KIDMbQ
Authorization: Bearer eyJjdHkiOiJKV1QiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiZGlyIn0..LppdczJz8iUazAT1MXF7wg.vu6sPxXGhvWUjujS8u67zfYSF9zWWXibsk8iyiDag3kXT63Q_fMVusPyIJWabbS-Aa3OS_jcWMI8veKu2kIKC_fTGn2VjfU4Rs4Gt4L95PnJnmeH11AxJi2z9Lq_dw35hVWQBWJZjhucihvb7A5p0z7vroa-5boeXHUJPg1qcfL_9S8ab91hIy2aBry4h_QSqOXp1hD22pE7KcrRFnbc3JoDhnoL9iBZQXXiUXyw9Cvce8krIkeD7_aZCIF7NVz66xZ9WKly3-OQDvR94EG4rTwAPAo8z2Zc6ioQSSdQWvXhij5V97Pjk4UPjHBP1kJxhC2y-aPfMBjnWZ0lhXtb7CfSsDwVKUl7egczsaL4-CQ3a_u9ptpDoXwXvQCTLChRbGkxaV4Lmhm7jbwaHo00xHpUP2XlPnaj7wNtqWDxZwJOUk5GVy4qGlnqpMhyJ-0YONcBxSOIcxSSZGR95h_ceiMHF4f2XDmosv-iIBvl8NuX_VC_atlsJ1_6DRPCFDR-X-p3oKWaLgwtH1JGv5F-bo9SeM6EeV9AE5PEweabiN9UtI72zuQKtiCa-1p690yWqK7F-CmZTNij4EZV7knleHoDdQ3SZhNPFnuybkq-0v8JJM2bPlkfzmxhSLIOzY87BcynHIVBPcXFt5FvBvFvzSKd1nhYMynfzuOsrq90Q3f-6k9WKvHAYhpJKNAkhGNWs11jgHAUrPS85Yub3kLEHMICunOKtVgwTSsjmkpMfd6QskIpdc17WWzCXg7XiKeCzNFyDpP6KNzQ0mHqw59ou0XMVByLZwDAeZIe00ix3kqVyI3o9ZIz0hZT5gs3OHzHDLOlYzq0TUB9qI3iucotmLgrX_nHP_FoR1wSmhe0xDnVQxWMRJksiu82cwyIqXtcMREMkn5Wyl4R5njfbickT-cpZ5Ru4v9twF2KAKknjDArNg7vyFbZEK9_TUsaLJzzF6N8-XOvWoibavCbeFXxd7fMaxTkMVYukNk1nXJOJQs_qPBL7ipJ3aMRBLofOF25Nf2KtSTaKC5COjOY0DrKaZ-FgNgN45S1NA45Ii4y-7BS40f7nrwruBM7SkFEZ5U_YtWMevKqKXvB12oj8WLRHmMtPYseLGBNSAS-QSZMYqZK3x36vGeTbVRdxlQ8UsjN.H8gItdZ6gh4z4g82KIDMbQ
Content-Type: application/json
SESSION: 64b9f9c9-e994-474f-8106-bdbe22845dfd

Response{protocol=http/1.1, code=401, message=Unauthorized, url=http://localhost:8080/managers/CDQRuntime/smartdq/training/}
coderdata
  • 63
  • 5
  • Posting a stacktrace would be helpful. Do you know if it is failing on the token session call or the project call? – shinjw Oct 02 '18 at 07:59
  • @shinjw please see the edits, I have added the console log. Also am I doing the write thing by sending cookie as part of header or should I do something else ? – coderdata Oct 02 '18 at 08:49
  • 1
    You will need to read into OKHttp’s docs to figure out how to use cookies. You’re passing in a header named SESSION instead – shinjw Oct 02 '18 at 18:37

0 Answers0