I am trying to use the tutorial here with the data I learned here to perform a HTTPUrlConnection POST Request. Every time I run it, the response gives the error message: "You Must enter a user name!" and "You must enter a password." Could anyone please explain why the server is not recognizing or even getting the posted data? Here is my code:
class urlRequest extends AsyncTask<String, String, String> {
protected String doInBackground(String... all) {
URL url;
String response = "";
try {
String requestURL = "https://hac.chicousd.org/LoginParent.aspx?page=GradebookSummary.aspx";
url = new URL(requestURL);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty( "charset", "utf-8");
conn.setRequestProperty( "Content-Length", Integer.toString(getPostDataString(postDataParams).length()));
conn.setFixedLengthStreamingMode(getPostDataString(postDataParams).length());
JSONObject postDataParams = new JSONObject();
postDataParams.put("checkCookiesEnabled", "true");
postDataParams.put("checkMobileDevice", "false");
postDataParams.put("checkStandaloneMode", "false");
postDataParams.put("checkTabletDevice", "false");
postDataParams.put("portalAccountUsername", "username");
postDataParams.put("portalAccountPassword", "password");
DataOutputStream os = new DataOutputStream(conn.getOutputStream());
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(getPostDataString(postDataParams)); // returns: checkCookiesEnabled=true&checkMobileDevice=false&checkStandaloneMode=false&checkTabletDevice=false&portalAccountUsername=username&portalAccountPassword=password
writer.close();
os.close();
int responseCode=conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
String line;
BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line=br.readLine()) != null) {
response+=line;
Log.i("tag", line);
}
}
else {
response="";
}
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
public String getPostDataString(JSONObject params) throws Exception {
StringBuilder result = new StringBuilder();
boolean first = true;
Iterator<String> itr = params.keys();
while(itr.hasNext()){
String key= itr.next();
Object value = params.get(key);
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(key, "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(value.toString(), "UTF-8"));
}
return result.toString();
}