ActivityMain이 HttpURLConnection을 사용하여 로컬 파일의 로컬 호스트에있는 PHP 파일에 연결하는 Android 프로젝트를 만듭니다. 내가 프로젝트를 실행하면HttpURLConnection .getInputStream() 작동 중지
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 라인을 반환).
'permission.INTERNET''이 앱에 설정되어 있습니까? 귀하의 캐치는''SecurityException''을 놓치고 있습니다. – Grisgram
'getErrorStream()'호출은 아마도'null'을 리턴하고 당신은'NullPointerException'을 가지고 있습니다. 지금까지의 대답은 입력 스트림을 사용하는 것이 좋습니다. 입력 스트림은 서버에서 실제 응답을 읽는 것이 옳은 선택 인 것처럼 들립니다. 읽는 오류 스트림 인 경우 읽으려고 시도하기 전에 'null'이 아닌지 확인하십시오. –
네, 죄송합니다, 오류가있는 부분을 게시하고, 프로젝트에 write write bufferedReader = new BufferedReader (new InputStreamReader (conn.getInputStream()))); – LukeV