Java Android登录不工作

Java Android登录不工作,java,android,json,login,Java,Android,Json,Login,嗨,有人能帮我看看这个代码吗?不知道我做错了什么,但try块没有运行。相反,它会进入捕捉块 public void onClick(View arg0) { //Toast.makeText(getBaseContext(), "connecting",Toast.LENGTH_SHORT).show(); // TODO Auto-generated method stub httpclient = new DefaultHttpClient(); htpost

嗨,有人能帮我看看这个代码吗?不知道我做错了什么,但try块没有运行。相反,它会进入捕捉块

public void onClick(View arg0) {
    //Toast.makeText(getBaseContext(), "connecting",Toast.LENGTH_SHORT).show();
    // TODO Auto-generated method stub
    httpclient = new DefaultHttpClient();
    htpost = new HttpPost("http://10.0.2.2/fanaticmobile/log_in.php");
    uname= username.getText().toString();
    pass= password.getText().toString();

    try {
        namearray = new ArrayList<NameValuePair>();

        namearray.add(new BasicNameValuePair("username", uname));
        namearray.add(new BasicNameValuePair("password", pass));
        htpost.setEntity(new UrlEncodedFormEntity(namearray));
        response= httpclient.execute(htpost);
        if(response.getStatusLine().getStatusCode()==200){
            entity= response.getEntity();

            if(entity != null){
                InputStream stream = entity.getContent();

                JSONObject jresponse = new JSONObject(ConvertInput(stream));
                String logged= jresponse.getString("logged");
                login_err.setText(""+logged);
                if(logged.equals("true")){
                    Toast.makeText(getBaseContext(), "Successfull",Toast.LENGTH_SHORT).show();
                    //String retname= jresponse.getString("name");
                    //String  retmail= jresponse.getString("email");
                }else if(logged.equals("false")){
                    String message=jresponse.getString("message");
                    Toast.makeText(getBaseContext(), message,Toast.LENGTH_SHORT).show();
                }

            }
        }else{

        }

    } 
    catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(getBaseContext(), "Poor Connection",Toast.LENGTH_SHORT).show();
    }

}//

请告诉我这是新的,我遵循了一个教程到这一点,但我的是不工作。如果在清单文件中设置了permissioninternet

就像注释中已经说明的那样,您正在主线程UI线程中运行网络操作。这不仅不鼓励长时间的操作永远不要使用主线程,而且在联网的情况下也被禁止

response= httpclient.execute(htpost)
^这是失败的

阅读谷歌官方参考资料中如何将代码移动到一个位置,并以正确的方式执行。谷歌搜索任务也会有所帮助

伪代码版本应为:

public class YourTask extends AsyncTask<Void, Void, Void>{
    YourListener mListener;
    public YourTask(final YourListener listener) {
        mListener = listener;
    }
    @Override
    protected Void doInBackground(final Void... params) {
        // do your lengthy operation here
        return null;
    }
    @Override
    protected void onPostExecute(Void result) {
        mListener.onVeryLongTaskDone();
    }
    public interface YourListener {
        public void onVeryLongTaskDone();
    }
}

我有一个建议,尝试使用AsyncHttpclient从服务器获取响应,而不需要这么长的代码


只需将jar文件包含在您的项目中,使用起来就会很简单。

请从您的logcat发布异常。这将包含它为什么不工作的线索;谷歌NetworkOnMainThreadException@KenWolflogcat太长了。还有别的办法吗?@Raghunandan谢谢。有办法解决吗?我是Android开发的新手。我通常写PHPcodes@Talagbegoogle for asynctask或使用线程或新库截取google@Aswin太好了,谢谢你。我会试着给你回电话。我应该把新的jar文件放在哪个文件夹中?在libs文件夹中,如果没有,创建文件夹。告诉我它是否不起作用。嗨@ASwin S Ashok我在这里收到错误public void onfailurer可选arg0,params,字符串arg1告诉我应该使用逗号。如果这不是太多的要求,你能帮我重新考虑我的代码吗?已将jar文件下载到我的libs文件夹中。哦,当然。对不起,请从代码中删除参数。这是我的错误。嗨,请问我如何从我的php文件中检索我发送的Json对象?我真的很困惑。我试着在onsuccess函数中封装jsonObject,但它与我之前遵循的方法大不相同。现在我只想告诉用户用户名是否正确,如果正确,我就打开一个新活动。但我似乎不知道如何检索json。请
public class YourTask extends AsyncTask<Void, Void, Void>{
    YourListener mListener;
    public YourTask(final YourListener listener) {
        mListener = listener;
    }
    @Override
    protected Void doInBackground(final Void... params) {
        // do your lengthy operation here
        return null;
    }
    @Override
    protected void onPostExecute(Void result) {
        mListener.onVeryLongTaskDone();
    }
    public interface YourListener {
        public void onVeryLongTaskDone();
    }
}
(new YourTask(YourActivityName.this)).execute();
 AsyncHttpClient asyncHttpClient=new AsyncHttpClient();
RequestParams params=new RequestParams();
        params.put("username", uname);
        params.put("password", pass);
            asyncHttpClient.post("http://10.0.2.2/fanaticmobile/log_in.php", params,new AsyncHttpResponseHandler(){
                @Override
                public void onFailure(Throwable arg0, String arg1) {
                    // TODO Auto-generated method stub
                    super.onFailure(arg0, arg1);
                }
                @Override
                public void onSuccess(String arg0) {
                    // TODO Auto-generated method stub
                    super.onSuccess(arg0);
                }
            });