I have found a working code for makeing simply HTTP requests here, from How can I make a simple HTTP request in MainActivity.java? (Android Studio) and I am going to post it below (with some changes, if I am not wrong it is now necessery to use try{} catch{}
). But I would like to ask how I can receive the content? I work with the code in the following way:
GetUrlContentTask req = new GetUrlContentTask();
req.execute("http://192.168.1.10/?pin=OFF1");
textView3.setText(req.doInBackground("http://192.168.1.10/?pin=OFF1"));
GetUrlContentTask
private class GetUrlContentTask extends AsyncTask<String, Integer, String> {
protected String doInBackground(String... urls) {
// String content1 = "";
try {
URL url = new URL(urls[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.connect();
BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String content = "", line;
while ((line = rd.readLine()) != null) {
content += line + "\n";
}
// content1 = content;
}
catch (Exception e) {
e.printStackTrace();
}
// return content1; - returns "", wrong
return "aaa";
//does not work return content;
}
protected void onProgressUpdate(Integer... progress) {
}
protected void onPostExecute(String result) {
// this is executed on the main thread after the process is over
// update your UI here
}
}
Add this to your onPostExecute(String result)
call
protected void onPostExecute(String result) {
// this is executed on the main thread after the process is over
// update your UI here
setMyData(result);
}
And then fill your textfield or whatever other data you need to update.
private void setMyData(String result){
textView3.setText(result);
}
Where exactly are you stuck? Your code mostly correct although you may need to rearrange it slightly. Your scope is a bit off and your commented code almost gets there. See below
protected String doInBackground(String... urls) {
String content = "", line = "";
HttpURLConnection httpURLConnection;
BufferedReader bufferedReader;
URL url;
try {
for(String uri : urls) {
url = new URL(uri);
url = new URI(url.toURI().getScheme(), url.getAuthority(), url.getPath(), "pin=" + URLEncoder.encode("&OFF1", "UTF-8"), null).toURL();
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setDoOutput(true);
httpURLConnection.connect();
bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
while ((line = bufferedReader.readLine()) != null) {
content += line + System.lineSeparator();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
bufferedReader.close();
} catch(Exception e) {
e.printStackTrace();
}
}
return content;
}
That will return a String representation of your page. If the page contains HTML it will return text/html, if it contains text it will return just text.
Then as a previous user stated you can set the response on your GUI
protected void onPostExecute(String result) {
textView3.setText(result);
}
The above example will technically work. However, I would highly recommend using http://loopj.com/android-async-http/ over HttpURLConnection. Your code will be much nicer which will matter down the line.
The code I sent you assumes that the parameter is always pin=OFF1 because it's more a proof of concept