无法建立连接,我已经测试了php文件,它正常,但仍然无法登录,并说;“登录未成功”; package com.example.login; 导入java.io.BufferedReader; 导入java.io.IOException; 导入java.io.InputStream; 导入java.io.InputStreamReader; 导入java.util.ArrayList; 导入org.apache.http.HttpEntity; 导入org.apache.http.HttpResponse; 导入org.apache.http.NameValuePair; 导入org.apache.http.client.HttpClient; 导入org.apache.http.client.entity.UrlEncodedFormEntity; 导入org.apache.http.client.methods.HttpPost; 导入org.apache.http.impl.client.DefaultHttpClient; 导入org.apache.http.message.BasicNameValuePair; 导入org.json.JSONObject; 导入android.os.Bundle; 导入android.app.Activity; 导入android.content.SharedReferences; 导入android.view.view; 导入android.view.view.OnClickListener; 导入android.widget.Button; 导入android.widget.EditText; 导入android.widget.Toast; 公共类MainActivity扩展活动实现OnClickListener{ 编辑文本etUser,etPass; 按钮博客; 字符串用户名、密码; HttpClient-HttpClient; HttpPost-HttpPost; ArrayList名称值对; HttpResponse响应; http实体; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 初始化(); } 私有无效初始化(){ etUser=(EditText)findViewById(R.id.etUser); etPass=(EditText)findViewById(R.id.etPass); bLogin=(按钮)findviewbyd(R.id.bSubmit); setOnClickListener(this); } @凌驾 公共void onClick(视图v){ //TODO自动生成的方法存根 httpclient=新的DefaultHttpClient(); httppost=新的httppost(“http://10.0.2.2/login/index.php"); username=etUser.getText().toString(); password=etPass.getText().toString(); 试一试{ nameValuePairs=新的ArrayList(); 添加(新的BasicNameValuePair(“用户名”,username)); 添加(新的BasicNameValuePair(“密码”,password)); setEntity(新的UrlEncodedFormEntity(nameValuePairs)); response=httpclient.execute(httppost); if(response.getStatusLine().getStatusCode()==200){ entity=response.getEntity(); 如果(实体!=null){ InputStream instream=entity.getContent(); JSONObject jsonResponse=新的JSONObject(convertStreamToString(instream)); String retUser=jsonResponse.getString(“用户”); String retPass=jsonResponse.getString(“pass”); if(username.equals(retUser)和password.equals(retPass)){ SharedReferences sp=GetSharedReferences(“登录详细信息”,0); SharedReferences.Editor spedit=sp.edit(); spedit.putString(“用户”,用户名); spedit.putString(“pass”,密码); 提交(); Toast.makeText(getBaseContext(),“SUCCESS”,Toast.LENGTH_SHORT.show(); }否则{ Toast.makeText(getBaseContext(),“无效登录详细信息”,Toast.LENGTH\u SHORT.show(); } } } }捕获(例外e){ e、 printStackTrace(); Toast.makeText(getBaseContext(),“Login Unsuccessfull”,Toast.LENGTH\u SHORT.show(); } } 私有静态字符串convertStreamToString(InputStream为){ BufferedReader reader=新的BufferedReader(新的InputStreamReader(is)); StringBuilder sb=新的StringBuilder(); 字符串行=null; 试一试{ 而((line=reader.readLine())!=null){ sb.追加(第+行“\n”); } }捕获(IOE异常){ e、 printStackTrace(); }最后{ 试一试{ is.close(); }捕获(IOE异常){ e、 printStackTrace(); } } 使某人返回字符串(); } }

无法建立连接,我已经测试了php文件,它正常,但仍然无法登录,并说;“登录未成功”; package com.example.login; 导入java.io.BufferedReader; 导入java.io.IOException; 导入java.io.InputStream; 导入java.io.InputStreamReader; 导入java.util.ArrayList; 导入org.apache.http.HttpEntity; 导入org.apache.http.HttpResponse; 导入org.apache.http.NameValuePair; 导入org.apache.http.client.HttpClient; 导入org.apache.http.client.entity.UrlEncodedFormEntity; 导入org.apache.http.client.methods.HttpPost; 导入org.apache.http.impl.client.DefaultHttpClient; 导入org.apache.http.message.BasicNameValuePair; 导入org.json.JSONObject; 导入android.os.Bundle; 导入android.app.Activity; 导入android.content.SharedReferences; 导入android.view.view; 导入android.view.view.OnClickListener; 导入android.widget.Button; 导入android.widget.EditText; 导入android.widget.Toast; 公共类MainActivity扩展活动实现OnClickListener{ 编辑文本etUser,etPass; 按钮博客; 字符串用户名、密码; HttpClient-HttpClient; HttpPost-HttpPost; ArrayList名称值对; HttpResponse响应; http实体; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 初始化(); } 私有无效初始化(){ etUser=(EditText)findViewById(R.id.etUser); etPass=(EditText)findViewById(R.id.etPass); bLogin=(按钮)findviewbyd(R.id.bSubmit); setOnClickListener(this); } @凌驾 公共void onClick(视图v){ //TODO自动生成的方法存根 httpclient=新的DefaultHttpClient(); httppost=新的httppost(“http://10.0.2.2/login/index.php"); username=etUser.getText().toString(); password=etPass.getText().toString(); 试一试{ nameValuePairs=新的ArrayList(); 添加(新的BasicNameValuePair(“用户名”,username)); 添加(新的BasicNameValuePair(“密码”,password)); setEntity(新的UrlEncodedFormEntity(nameValuePairs)); response=httpclient.execute(httppost); if(response.getStatusLine().getStatusCode()==200){ entity=response.getEntity(); 如果(实体!=null){ InputStream instream=entity.getContent(); JSONObject jsonResponse=新的JSONObject(convertStreamToString(instream)); String retUser=jsonResponse.getString(“用户”); String retPass=jsonResponse.getString(“pass”); if(username.equals(retUser)和password.equals(retPass)){ SharedReferences sp=GetSharedReferences(“登录详细信息”,0); SharedReferences.Editor spedit=sp.edit(); spedit.putString(“用户”,用户名); spedit.putString(“pass”,密码); 提交(); Toast.makeText(getBaseContext(),“SUCCESS”,Toast.LENGTH_SHORT.show(); }否则{ Toast.makeText(getBaseContext(),“无效登录详细信息”,Toast.LENGTH\u SHORT.show(); } } } }捕获(例外e){ e、 printStackTrace(); Toast.makeText(getBaseContext(),“Login Unsuccessfull”,Toast.LENGTH\u SHORT.show(); } } 私有静态字符串convertStreamToString(InputStream为){ BufferedReader reader=新的BufferedReader(新的InputStreamReader(is)); StringBuilder sb=新的StringBuilder(); 字符串行=null; 试一试{ 而((line=reader.readLine())!=null){ sb.追加(第+行“\n”); } }捕获(IOE异常){ e、 printStackTrace(); }最后{ 试一试{ is.close(); }捕获(IOE异常){ e、 printStackTrace(); } } 使某人返回字符串(); } },android,Android,您必须获得NetworkOnMainThreadException,请检查日志猫。也请张贴它。如果不是这样,将编辑/删除我的答案 最好知道它发生的原因以及如何使用异步任务: 必须检查您的用户名和密码是否正确且成功发布,还必须确保您使用的密钥与Json响应中的密钥相同。同时发布日志猫。发布日志猫,检查是否存在异常,尤其是在单击首次发生时使用AsyncTask或线程与服务器通信。如果没有,则会出现高于api7的NetworkMainThreadException异常。问题是HttpClient

您必须获得NetworkOnMainThreadException,请检查日志猫。也请张贴它。如果不是这样,将编辑/删除我的答案

最好知道它发生的原因以及如何使用异步任务:




必须检查您的用户名和密码是否正确且成功发布,还必须确保您使用的密钥与Json响应中的密钥相同。同时发布日志猫。发布日志猫,检查是否存在异常,尤其是在单击首次发生时使用AsyncTask或线程与服务器通信。如果没有,则会出现高于api7的NetworkMainThreadException异常。问题是HttpClient没有执行httppost,我不知道为什么,我确信发布的用户和pass是相同的。@user3382695您试图在其主线程上执行网络操作。
package com.example.login;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;
import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

    EditText etUser, etPass;
    Button bLogin;
    String username, password;
    HttpClient httpclient;
    HttpPost httppost;
    ArrayList<NameValuePair> nameValuePairs;
    HttpResponse response;
    HttpEntity entity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        initialise();
    }

    private void initialise(){

        etUser =(EditText) findViewById(R.id.etUser);
        etPass = (EditText) findViewById(R.id.etPass);
        bLogin = (Button)findViewById(R.id.bSubmit);
        bLogin.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        httpclient= new DefaultHttpClient();

        httppost = new HttpPost("http://10.0.2.2/login/index.php");
        username = etUser.getText().toString();
        password = etPass.getText().toString();

        try{
            nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("username", username));
            nameValuePairs.add(new BasicNameValuePair("password", password));

            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            response = httpclient.execute(httppost);

            if(response.getStatusLine().getStatusCode()==200){
                entity=response.getEntity();
                if(entity  != null){
                    InputStream instream = entity.getContent();
                    JSONObject jsonResponse = new JSONObject(convertStreamToString(instream));

                    String retUser = jsonResponse.getString("user");

                    String retPass = jsonResponse.getString("pass");
                    if(username.equals(retUser) && password.equals(retPass)){
                        SharedPreferences sp = getSharedPreferences("logindetails",0);
                        SharedPreferences.Editor spedit = sp.edit();

                        spedit.putString("user",username);
                        spedit.putString("pass",password);
                        spedit.commit();
                        Toast.makeText(getBaseContext(),"SUCCESS", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(getBaseContext(),"Invalid Logind Details", Toast.LENGTH_SHORT).show();
                    }
                }
            }           
        }catch(Exception e){
            e.printStackTrace();
            Toast.makeText(getBaseContext(),"Login Unsuccessfull", Toast.LENGTH_SHORT).show();
        }
    }

    private static String convertStreamToString(InputStream is){

        BufferedReader reader = new BufferedReader(new InputStreamReader(is));

        StringBuilder sb = new StringBuilder();

        String line = null;

        try{
            while((line = reader.readLine())!= null){
                sb.append(line + "\n");
            }
        }catch(IOException e){
            e.printStackTrace();
        }finally{
            try{
                is.close();
            }catch(IOException e){
                e.printStackTrace();
            }
        }
        return sb.toString();
    }
}