Android 后台方法中的异常
我正在开发一个android应用程序,它基本上是登录的,我的数据库是MySQL(本地)。我在Android 后台方法中的异常,android,Android,我正在开发一个android应用程序,它基本上是登录的,我的数据库是MySQL(本地)。我在doInBackground方法中遇到错误 public class Login extends Activity{ private EditText editTextUserName; private EditText editTextPassword; Button login; String username; String password;
doInBackground
方法中遇到错误
public class Login extends Activity{
private EditText editTextUserName;
private EditText editTextPassword;
Button login;
String username;
String password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
editTextUserName = (EditText) findViewById(R.id.txtUsername);
editTextPassword = (EditText) findViewById(R.id.txtPassword);
login = (Button)findViewById(R.id.btnLogin);
}
public void invokeLogin(View view){
username = editTextUserName.getText().toString();
password = editTextPassword.getText().toString();
login(username,password);
}
private void login(final String username, String password) {
class LoginAsync extends AsyncTask<String, Void, String>{
private Dialog loadingDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
loadingDialog = ProgressDialog.show(Login.this, "Please wait", "Loading...");
}
@Override
protected String doInBackground(String... params) {
String uname = editTextUserName.getText().toString();
String pass = editTextPassword.getText().toString();
InputStream is = null;
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("editTextUserName", uname));
nameValuePairs.add(new BasicNameValuePair("editTextPassword", pass));
String result = null;
try{
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("localhost/Navigation/connect.php");
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
result = sb.toString();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(String result){
String s = result.trim();
loadingDialog.dismiss();
if(s.equalsIgnoreCase("success")){
Intent intent = new Intent(Login.this, MainActivity.class);
//intent.putExtra(USER_NAME, username);
finish();
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), "Invalid User Name or Password", Toast.LENGTH_LONG).show();
}
}
}
LoginAsync la = new LoginAsync();
la.execute(username, password);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
我认为如果您在emulator中运行,则“localhost/Navigation/connect.php”将不起作用,您应该使用“”,或者如果您在真实设备上运行,请确保您的移动设备和计算机都在同一网络上运行,并将url指向“”我认为“localhost/Navigation/connect.php”如果您在emulator中运行,您应该使用“”,或者如果您在真实设备上运行,请确保您的移动设备和计算机都在同一网络上运行,并将url指向“”调试此错误时有什么问题?调试此错误时有什么问题?我已经尝试过了,但是,这也不起作用@Minfu您确定添加了“http://”并且得到了相同的异常(IllegalStateException:目标主机不能为null,或者在参数中设置。scheme=null,host=null,path=localhost/Navigation/connect.php)我已经尝试过了,但也不起作用@minfu是否确实添加了“http://”,并且得到了相同的异常(IllegalStateException:目标主机不能为null,或在参数中设置。scheme=null,host=null,path=localhost/Navigation/connect.php)
10-11 21:03:34.430: E/AndroidRuntime(858): FATAL EXCEPTION: AsyncTask #2
10-11 21:03:34.430: E/AndroidRuntime(858): Process: com.example.navigation, PID: 858
10-11 21:03:34.430: E/AndroidRuntime(858): java.lang.RuntimeException: An error occured while executing doInBackground()
10-11 21:03:34.430: E/AndroidRuntime(858): at android.os.AsyncTask$3.done(AsyncTask.java:300)
10-11 21:03:34.430: E/AndroidRuntime(858): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
10-11 21:03:34.430: E/AndroidRuntime(858): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
10-11 21:03:34.430: E/AndroidRuntime(858): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
10-11 21:03:34.430: E/AndroidRuntime(858): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
10-11 21:03:34.430: E/AndroidRuntime(858): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
10-11 21:03:34.430: E/AndroidRuntime(858): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
10-11 21:03:34.430: E/AndroidRuntime(858): at java.lang.Thread.run(Thread.java:841)
10-11 21:03:34.430: E/AndroidRuntime(858): Caused by: java.lang.IllegalStateException: Target host must not be null, or set in parameters. scheme=null, host=null, path=localhost/Navigation/connect.php
10-11 21:03:34.430: E/AndroidRuntime(858): at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:591)
10-11 21:03:34.430: E/AndroidRuntime(858): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:293)
10-11 21:03:34.430: E/AndroidRuntime(858): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
10-11 21:03:34.430: E/AndroidRuntime(858): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
10-11 21:03:34.430: E/AndroidRuntime(858): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
10-11 21:03:34.430: E/AndroidRuntime(858): at com.example.navigation.Login$1LoginAsync.doInBackground(Login.java:93)
10-11 21:03:34.430: E/AndroidRuntime(858): at com.example.navigation.Login$1LoginAsync.doInBackground(Login.java:1)
10-11 21:03:34.430: E/AndroidRuntime(858): at android.os.AsyncTask$2.call(AsyncTask.java:288)
10-11 21:03:34.430: E/AndroidRuntime(858): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
10-11 21:03:34.430: E/AndroidRuntime(858): ... 4 more