Неустранимое исключение: AsyncTask # 1 и android.view.WindowLeaked

Я только сегодня начал возиться с android studio и следовал рабочему руководству, чтобы создать страницу входа пользователя.
Первое действие появляется, но когда я нажимаю кнопку входа в систему, приложение вылетает со следующими кодами ошибок:

первый

9505-9538 /? E / AndroidRuntime ﹕ ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: AsyncTask # 1
Процесс: com.example.aks.mobilepos, PID: 9505
java.lang.RuntimeException: произошла ошибка при выполнении doInBackground ()
на android.os.AsyncTask $ 3.done (AsyncTask.java:300)
в java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:355)
в java.util.concurrent.FutureTask.setException (FutureTask.java:222)
в java.util.concurrent.FutureTask.run (FutureTask.java:242)
на android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:231)
в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112)
в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:587)
на java.lang.Thread.run (Thread.java:841)
Причина: java.lang.IllegalStateException: целевой хост не должен быть нулевым или заданным в параметрах. схема = ноль, хост = ноль, путь = 192.168.1.141 / login.php
в org.apache.http.impl.client.DefaultRequestDirector.determineRoute (DefaultRequestDirector.java:591)
в org.apache.http.impl.client.DefaultRequestDirector.execute (DefaultRequestDirector.java:293)
в org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:555)
в org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:487)
в org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:465)
в com.example.aks.mobilepos.JSONParser.makeHttpRequest (JSONParser.java:110)
в com.example.aks.mobilepos.LoginActivity $ AttemptLogin.doInBackground (LoginActivity.java:80)
в com.example.aks.mobilepos.LoginActivity $ AttemptLogin.doInBackground (LoginActivity.java:53)
на android.os.AsyncTask $ 2.call (AsyncTask.java:288)
в java.util.concurrent.FutureTask.run (FutureTask.java:237)
на android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:231)
в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112)
в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:587)
на java.lang.Thread.run (Thread.java:841)

второй:

9505-9505 /? E / WindowManager ﹕ android.view.WindowLeaked: действие com.example.aks.mobilepos.LoginActivity утекло окно com.android.internal.policy.impl.PhoneWindow $ DecorView {41c35f60 VE …. R …… D 0,0-456,144}, который был первоначально добавлен здесь
на android.view.ViewRootImpl. (ViewRootImpl.java:346)
на android.view.WindowManagerGlobal.addView (WindowManagerGlobal.java:248)
на android.view.WindowManagerImpl.addView (WindowManagerImpl.java:69)
на android.app.Dialog.show (Dialog.java:286)
в com.example.aks.mobilepos.LoginActivity $ AttemptLogin.onPreExecute (LoginActivity.java:63)
на android.os.AsyncTask.executeOnExecutor (AsyncTask.java:587)
на android.os.AsyncTask.execute (AsyncTask.java:535)
на com.example.aks.mobilepos.LoginActivity.onClick (LoginActivity.java:50)
на android.view.View.performClick (View.java:4445)
на android.view.View $ PerformClick.run (View.java:18446)
на android.os.Handler.handleCallback (Handler.java:733)
на android.os.Handler.dispatchMessage (Handler.java:95)
на android.os.Looper.loop (Looper.java:136)
на android.app.ActivityThread.main (ActivityThread.java:5146)
в java.lang.reflect.Method.invokeNative (родной метод)
в java.lang.reflect.Method.invoke (Method.java:515)
на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:732)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:566)
в dalvik.system.NativeStart.main (собственный метод)

Я не могу понять, что не так, localhost / index.php доступен через мобильный браузер, они находятся в той же сети Wi-Fi.

вот файлы
LoginActivity:

public class LoginActivity extends ActionBarActivity implements View.OnClickListener{

Button bLogin;
EditText etUsername, etPassword;
private ProgressDialog pDialog;
// JSON parser class
JSONParser jsonParser = new JSONParser();
private static final String LOGIN_URL = "192.168.1.141/login.php";
private static final String TAG_SUCCESS = "success";
private static final String TAG_MESSAGE = "message";


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);

etUsername = (EditText) findViewById(R.id.etUsername);
etPassword = (EditText) findViewById(R.id.etPassword);
bLogin = (Button) findViewById(R.id.bLogin);
bLogin.setOnClickListener(this);

}

@Override
public void onClick(View v) {
new AttemptLogin().execute();
}

class AttemptLogin extends AsyncTask<String, String, String> {

boolean failure = false;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(LoginActivity.this);
pDialog.setMessage("Attempting for login...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... args) {
// TODO Auto-generated method stub
// here Check for success tag
int success;
String username = etUsername.getText().toString();
String password = etPassword.getText().toString();
try {

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("password", password));

Log.d("request!", "starting");

JSONObject json = jsonParser.makeHttpRequest(
LOGIN_URL, "POST", params);

// checking  log for json response
Log.d("Login attempt", json.toString());

// success tag for json
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
Log.d("Successfully Login!", json.toString());

Intent ii = new Intent(LoginActivity.this,BillActivity.class);
finish();
// this finish() method is used to tell android os that we are done with current //activity now! Moving to other activity
startActivity(ii);
return json.getString(TAG_MESSAGE);
}else{

return json.getString(TAG_MESSAGE);

}
} catch (JSONException e) {
e.printStackTrace();
}

return null;
}
/**
* Once the background process is done we need to  Dismiss the progress dialog asap
* **/
protected void onPostExecute(String message) {

pDialog.dismiss();
if (message != null){
Toast.makeText(LoginActivity.this, message, Toast.LENGTH_LONG).show();
}
}
}
}

JSONParser:

public class JSONParser {
static InputStream is = null;
static JSONObject jsonObj ;
static String json = "";

// default no argument constructor for jsonpaser class
public JSONParser() {

}


public JSONObject getJSONFromUrl(final String url) {

// Making HTTP request
try {

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);

// Executing POST request & storing the response from server  locally.
HttpResponse httpResponse = httpClient.execute(httpPost);

HttpEntity httpEntity = httpResponse.getEntity();

is = httpEntity.getContent();

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

try {


// Create a BufferedReader
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
// Declaring string builder
StringBuilder str = new StringBuilder();
//  string to store the JSON object.
String strLine = null;

// Building while we have string !equal null.
while ((strLine = reader.readLine()) != null) {
str.append(strLine + "\n");
}

// Close inputstream.
is.close();
// string builder data conversion  to string.
json = str.toString();
} catch (Exception e) {
Log.e("Error", " something wrong with converting result " + e.toString());
}

// Try block used for pasrseing String to a json object
try {
jsonObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("json Parsering", "" + e.toString());
}

// Returning json Object.
return jsonObj;

}



public JSONObject makeHttpRequest(String url, String method,
List<NameValuePair> params) {

// Make HTTP request
try {

// checking request method
if(method == "POST"){

// now defaultHttpClient object
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));

HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();

}else if(method == "GET"){
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);

HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder str = new StringBuilder();
String strLine = null;
while ((strLine = reader.readLine()) != null) {
str.append(strLine + "\n");
}
is.close();
json = str.toString();
} catch (Exception e) {

}

// now will try to parse the string into JSON object
try {
jsonObj = new JSONObject(json);
} catch (JSONException e) {

}


return jsonObj;

}

}

BillActivity пустое действие по умолчанию, сгенерированное android studio.

Я также могу опубликовать файл login.php, любая помощь будет оценена.

0

Решение

Начните свой URL с http: // или https: //. В противном случае он не может определить протокол и обрабатывает весь URL-адрес как путь, а не как узел, за которым следует путь

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector