Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #39535 > unrolled thread
| Started by | "C.D. Altenburg, Ph.D," <cdalten@gmail.com> |
|---|---|
| First post | 2020-07-06 07:27 -0700 |
| Last post | 2020-07-06 17:44 -0700 |
| Articles | 4 — 2 participants |
Back to article view | Back to comp.lang.java.programmer
How do I get JSON data instead of viewstate? "C.D. Altenburg, Ph.D," <cdalten@gmail.com> - 2020-07-06 07:27 -0700
Re: How do I get JSON data instead of viewstate? Joerg Meier <joergmmeier@arcor.de> - 2020-07-06 23:39 +0200
Re: How do I get JSON data instead of viewstate? "C.D. Altenburg, Ph.D," <cdalten@gmail.com> - 2020-07-06 17:20 -0700
Re: How do I get JSON data instead of viewstate? "C.D. Altenburg, Ph.D," <cdalten@gmail.com> - 2020-07-06 17:44 -0700
| From | "C.D. Altenburg, Ph.D," <cdalten@gmail.com> |
|---|---|
| Date | 2020-07-06 07:27 -0700 |
| Subject | How do I get JSON data instead of viewstate? |
| Message-ID | <bdaa75bc-250a-4660-b49b-c96bbf111fe0o@googlegroups.com> |
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?
[toc] | [next] | [standalone]
| From | Joerg Meier <joergmmeier@arcor.de> |
|---|---|
| Date | 2020-07-06 23:39 +0200 |
| Message-ID | <di4ny43mubtn$.59e3rk277485.dlg@40tude.net> |
| In reply to | #39535 |
On Mon, 6 Jul 2020 07:27:02 -0700 (PDT), C.D. Altenburg, Ph.D, wrote: > Right now I'm opening a URL connection with the following methods > [...] Okay, there is no nice way to say this: that code is terrible and would literally serve as an example of common beginner mistakes. I don't want to be mean about it, but the sooner your throw it away and just use a proper library or modern code the better. Personally, I would go with Retrofit 2 which uses OkHttp and Jackson under the hood (by default), but there are many great solutions for this common use case these days, and none of them involve writing low level code like this. > So the question is, how do I get the JSON data instead of the viewstate? Sadly, I can't even help you with your actual problem: because that's on the server side. We have no idea how to get a random website to serve JSON if it isn't. :( Liebe Gruesse, Joerg -- Ich lese meine Emails nicht, replies to Email bleiben also leider ungelesen.
[toc] | [prev] | [next] | [standalone]
| From | "C.D. Altenburg, Ph.D," <cdalten@gmail.com> |
|---|---|
| Date | 2020-07-06 17:20 -0700 |
| Message-ID | <21792bb3-a398-4998-8100-864acd6dca03o@googlegroups.com> |
| In reply to | #39536 |
Fair enough
[toc] | [prev] | [next] | [standalone]
| From | "C.D. Altenburg, Ph.D," <cdalten@gmail.com> |
|---|---|
| Date | 2020-07-06 17:44 -0700 |
| Message-ID | <d619ec47-3f8b-437e-92a3-7f4682f3c33eo@googlegroups.com> |
| In reply to | #39537 |
Someone had suggested Retrofit before. I need to figure out how to install it on Android. This could be a while since I just recently learned how to use things like git and React from the command line. My excuse is that I'm a Windows point and click type of person.
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.java.programmer
csiph-web