• Re: How do I get the JSON data instead of the viewstate (postback)?

    From =?UTF-8?B?SMOkcnJhIFJhbW9i?=@21:1/5 to All on Wed Jan 5 00:25:32 2022
    Chad kirjutas EsmaspΓ€ev, 6. juuli 2020 kl 17:28:23 UTC+3:
    Right now I'm opening a URL connection with the following methods

    private String downloadLoginPage(URL url) throws IOException { Log.d(PRODUCTION_TAG, "===> " + url);
    //readJSON(url);
    //InputStream inputStream = null;
    BufferedReader bufferedReader = null;
    //HttpsURLConnection connection = null;
    HttpURLConnection connection = null;
    String result = null;
    String cookies = "";
    int code = 0; //added on 12 - 8 - 2018
    try {



    //The input form passed from the client to the server is in gzip format. //Any other other type will result in an I/0 error
    connection = (HttpURLConnection) url.openConnection();

    connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json; utf-8");

    connection.setRequestProperty("Accept", "application/json"); connection.addRequestProperty("Accept-Encoding", "gzip, deflate, br"); connection.addRequestProperty("X-Requested-With", "XMLHttpRequest"); connection.addRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Cache-Control", "no-cache, no-store, must-revalidate");
    connection.setDoInput(true);
    connection.setDoOutput(true);

    //cookies = connection.getHeaderField("Set-Cookie"); //connection.setRequestProperty("Cookie", cookies); //connection.setChunkedStreamingMode(0); //added on 9 - 12 - 2018 //Fconnection.connect();

    Log.e(PRODUCTION_TAG, "----------------------------------------"); Log.e(PRODUCTION_TAG, "THE RESPONSE MESSAGE IS: " + connection.getResponseMessage());
    Log.e(PRODUCTION_TAG, "THE RESPONSE REQUEST IS: " + connection.getRequestMethod());
    Log.e(PRODUCTION_TAG, "THE RESPONSE CONTENT ENCONDING IS: " + connection.getContentEncoding());
    Log.e(PRODUCTION_TAG, "THE RESPONSE HEADERS ARE: " + connection.getHeaderFields());
    Log.e(PRODUCTION_TAG, "-----------------------------------"); //Log.e(PRODUCTION_TAG, "THE RESPONSE CONTENT: " + connection.getContent().toString());
    //int responsecode = connection.getResponseCode();
    int responsecode = ((HttpURLConnection) connection).getResponseCode(); Log.e(PRODUCTION_TAG, "THE RESPONSE CODE IS: " + responsecode);
    //int responsecode = 200;
    if (responsecode != HttpsURLConnection.HTTP_OK) {
    Log.e(PRODUCTION_TAG, "POSSIBLE 404? in downloadLogin()");

    //connection.disconnect();
    //redirect = true;
    //return null;
    throw new IOException("Http error code" + responsecode); //disabled in an attempt to debug
    }
    if ( responsecode == HttpsURLConnection.HTTP_MOVED_TEMP || responsecode == HttpsURLConnection.HTTP_MOVED_PERM) {

    Log.e(PRODUCTION_TAG, "REDIRECT DETECTED");
    //throw new IOException(" Http error code" + responsecode);
    //return null;
    throw new IOException("Redirect response code" + responsecode); //added on 10 - 2 - 2018
    }

    bufferedReader = new BufferedReader((new InputStreamReader(connection.getInputStream())));
    InputStream inputStream = connection.getInputStream(); //decodeStream(inputStream);

    if (bufferedReader != null) {
    //result = readStream(bufferedReader, amGzip, 64000); //Lame way to emulate ping.
    result = readStream(inputStream, amGzip, 64000); //Lame way to emulate ping. }
    }

    finally {
    if (bufferedReader != null) {
    bufferedReader.close();
    }
    if (connection != null) {
    //connection.disconnect(); //why no else if??
    }
    }
    //OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
    //out.write(result);
    //out.close();
    return result;
    }



    private String readStream(InputStream inputStreamReader, boolean amGzip, int offset) throws IOException{

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    String result = ""; //change from empty to null??! 10 - 4 - 2018
    int maxLength = offset; //don't ask

    byte [] buffer = new byte[maxLength];
    int numChars = 0;
    int readSize = 0;
    int length = 0;
    //START REVISED CODE
    //Possibly reading too large data stream. Hence why the insufficient resource error?

    /*String result = "";
    byte buffer[] = new byte[2048];
    int numberOfChars = 0;
    try {
    new BufferedReader(new InputStreamReader(new GZIPInputStream(stream))); while ((numberOfChars = stream.read()) > 0) {
    String app = new String(buffer, 0, numberOfChars);
    result = result + app;
    }


    */

    try {
    //new BufferedReader(new InputStreamReader(new GZIPInputStream(inputStreamReader)));
    InputStream inputStream = new GZIPInputStream(inputStreamReader);

    while((length = inputStream.read(buffer)) > 0) { byteArrayOutputStream.write(buffer, 0, length);
    }

    Log.e(PRODUCTION_TAG, "THE DECODED STREAM IS: " + byteArrayOutputStream);
    } catch (Exception e) {
    Log.e(PRODUCTION_TAG, "CAN'T DECODE STREAM BECAUSE: " + e.getMessage()); e.printStackTrace();
    }

    if (numChars != -1 ) {
    //Log.e(PRODUCTION_TAG, "INITIAL HTTP CONNECTION? " + numChars);
    numChars = Math.min(numChars, maxLength);
    result = new String(buffer, 0, numChars);
    }


    return result;
    }



    But instead of getting JSON, I get the viewstate...

    <!DOCTYPE html>
    <html>
    <head><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=10; IE=9; IE=8; IE=EDGE" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>
    Dayforce
    </title><link rel="shortcut icon" href="Content/Common/images/favicon.ico" /><link rel="apple-touch-icon" sizes="180x180" href="Content/Common/images/apple-touch-icon.png" /><link rel="mask-icon" href="Content/Common/images/safari-pinned-tab.svg" color=
    "#3067db" /><link rel="manifest" href="Content/Common/images/manifest.webmanifest" /><meta name="theme-color" content="#ffffff" /><meta name="msapplication-square70x70logo" content="Content/Common/images/mstile-70x70.png" /><meta name="msapplication-
    square150x150logo" content="Content/Common/images/mstile-150x150.png" /><meta name="msapplication-wide310x150logo" content="Content/Common/images/mstile-310x150.png" /><meta name="msapplication-square310x310logo" content="Content/Common/images/mstile-
    310x310.png" /><meta name="msapplication-TileColor" content="#ffffff" /><link id="styles" rel="stylesheet" href="/MyDayforce/Content/Common/styles/rebrandedCss?v=D7kcseGKVfP49nJNTdXABaiA3me99jgF-8a7GIDzPiw1" />
    <script type="text/javascript" src="https://static.dayforcehcm.com/libraries/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript" src="/MyDayforce/Scripts/Libs/bootstrap-modal.js"></script></head>
    <body>
    <form method="post" action="./MyDayforce.aspx" id="duo_form">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="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
    THE RESULT URL IS: https://usr57.dayforcehcm.com/MyDayforce/u/I3Q0QXXxm0q45z0RvYNdJA/HR/Employee/GetEmployeeBalanceDisplay



    So the question is, how do I get the JSON data instead of the viewstate?

    πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚
    πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚ πŸ™‚

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)