Я создаю проект Android, в котором ActivityMain подключается к файлу PHP (на локальном сервере, localhost) с использованием HttpURLConnection;HttpURLConnection .getInputStream() stop working
У меня есть проблема со следующей строки кода:
bufferedReader = new BufferedReader(new InputStreamReader((conn.getErrorStream())));
Когда я запускаю проект, приложение останавливается в этой точке, без возврата какой-либо ошибки.
Где проблема?
сообщить кодовую часть здесь:
public class SendToLogin extends AsyncTask<String, Object, String> {
//private EditText usernameField,passwordField;
private String username, password;
private Context context;
private Boolean loggato = false;
JSONObject rspJ;
public SendToLogin(String usr, String psw, Context c) {
username = usr;
password = psw;
context = c;
}
@Override
protected void onPreExecute() {
}
@Override
protected String doInBackground(String... params) {
String link = params[0] + "?username=" + username.toString() + "&password=" + password.toString();
URL url = null;
HttpURLConnection conn = null;
BufferedReader bufferedReader = null;
String result = "";
String line = "";
try {
url = new URL(link);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(1000);
conn.setDoInput(true);
int status = conn.getResponseCode();
bufferedReader = new BufferedReader(new InputStreamReader((conn.getErrorStream())));
while ((line = bufferedReader.readLine()) != null) {
result += line + "\n";
}
bufferedReader.close();
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
//super.onPostExecute(aVoid);
String result = s;
JSONObject reader = null;
try {
reader = new JSONObject(result);
String query_result = reader.getString("msg");
if(query_result.toString() == "ok")
new ListaUtenti();
else {
Toast loginErrorToast = Toast.makeText(context, "Errore! login errato!", Toast.LENGTH_SHORT);
}
} catch (JSONException e) {
e.printStackTrace();
}
//new ReceiveToLogin().execute();
}
}
(код PHP возвращает JSON строку правильно, когда я использую браузер, чтобы проверить его)
Спасибо вам.
'' разрешение.INTERNET'' установлено в вашем приложении? Ваши уловы пропускают «SecurityException». – Grisgram
Вызов 'getErrorStream()' вероятно, возвращает 'null', и у вас есть' NullPointerException'. Ответы до сих пор предлагают использовать входной поток, который звучит как правильный выбор, если вы намерены прочитать фактический ответ с сервера. Если это поток ошибок, который вы хотите прочитать, убедитесь, что он не «null», прежде чем пытаться его прочитать. –
Да, извините, я отправляю часть с ошибкой, в проекте я пишу bufferedReader = new BufferedReader (новый InputStreamReader ((conn.getInputStream()))); – LukeV