Issue
I have a project that connect to LAMP server and fetch some data by using AsyncTask . This app run on all Android APIs from API 16 to API 26 correctly . But when examine it on Android 9 ( API 28 ) , in the code that I show below variable "res" does not give back any data . Why?
import android.os.AsyncTask;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
public class loginserver extends AsyncTask {
private String Link = "";
private String User = "";
private String Pass = "";
public loginserver(String link, String user, String pass) {
Link = link;
User = user;
Pass = pass;
}
@Override
protected Object doInBackground(Object[] objects) {
try {
String data = URLEncoder.encode("username", "UTF8") +
"=" + URLEncoder.encode(User, "UTF8");
data += "&" + URLEncoder.encode("password", "UTF8") +
"=" + URLEncoder.encode(Pass, "UTF8");
URL url = new URL(Link);
URLConnection urlConnection = url.openConnection();
urlConnection.setDoOutput(true);
OutputStreamWriter outputStreamWriter =
new OutputStreamWriter(urlConnection.getOutputStream());
outputStreamWriter.write(data);
outputStreamWriter.flush();
BufferedReader bufferedReader =
new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuilder stringBuilder = new StringBuilder();
String line = null;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
SecondActivity.res = stringBuilder.toString();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
Solution
Given it's API 28 going wrong, I suspect it's to do with this. The link is to an Android Developer Blog post detailing restrictions relating to network security introduced on Android P, basically banning cleartext communications unless you take steps to whitelist certain domains.
Answered By - Columbo
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.