当我尝试访问我的API时返回问题

时间:2019-06-25 20:55:57

标签: java android mysql

我正在Android上设置应用程序,现在正在尝试登录系统。

所以我用php创建了一个API,如果凭据很好,我会尝试在Java代码中收回JWT令牌。

public class ConnectionActivity extends AppCompatActivity {

    private EditText email;
    private EditText mdp;
    private Button connect;
    private byte[] encodedhash;
    private ConnectionActivity activity;
    private String result = "";
    private String emailStr;
    ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
    private InputStream is;


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


        this.mdp = (EditText) findViewById(R.id.mdp_connect);
        this.connect = (Button) findViewById(R.id.button_connect);
        this.email = (EditText) findViewById(R.id.email_connect);

        this.activity = this;


        connect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (mdp != null && email != null) {
                    MessageDigest digest = null;
                    try {
                        digest = MessageDigest.getInstance("SHA-256");
                    } catch (NoSuchAlgorithmException e) {
                        e.printStackTrace();
                    }
                    encodedhash = digest.digest(mdp.getText().toString().getBytes(StandardCharsets.UTF_8));

                    //TODO Finsih the connect ot BDD : resolve the problem of postParameters

                    emailStr = email.getText().toString();

                    postParameters.add(new BasicNameValuePair("email", emailStr));
                    postParameters.add(new BasicNameValuePair("mdp", encodedhash.toString()));

                    Log.d("connect1", emailStr);

                    ConnectTask cntTask = new ConnectTask();
                    cntTask.execute();


                } else {
                    Toast.makeText(activity, "Tout les champs doivent êtres remplies", Toast.LENGTH_SHORT).show();
                }
            }
        });


    }
    public class ConnectTask extends AsyncTask<String, Void, String> {

        protected String doInBackground(String... urls) {

            try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("https://****/connexion.php");
                httppost.setEntity(new UrlEncodedFormEntity(postParameters));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
            }catch(Exception e){
                Log.e("connect", "Error in http connection "+e.toString());
            }

            try{
                BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                is.close();

                result=sb.toString();
                Log.d("connect1", result);
            }catch(Exception e){
                Log.e("connect", "Error converting result "+e.toString());
            }
            return result;
        }
        //This Method is called when Network-Request finished
        protected void onPostExecute(String serverData) {
            if (result == "IMDP") {
                Toast.makeText(activity, "Mot de passe invalide", Toast.LENGTH_LONG).show();
            } else if (result == "IEM") {
                Toast.makeText(activity, "Adresse email inconue, veuillez vous incrire", Toast.LENGTH_LONG).show();
            } else {
                try {
                    File temp = File.createTempFile("JWT", ".tmp");

                    BufferedWriter bw = new BufferedWriter(new FileWriter(temp));
                    bw.write(result);
                    bw.close();

                    Toast.makeText(activity, "Connecté", Toast.LENGTH_LONG).show();

                    String str;
                    BufferedReader br = new BufferedReader(new FileReader(temp));
                    while((str = br.readLine()) != null) {
                        Log.d("debugInscrip", str);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

所以问题在于API返回我的电子邮件地址和密码为空,但是我之前使用Advanced REST Client之类的软件测试了API,并且一切运行正常。所以我认为问题出在ArrayList postParameters。

希望您能帮助我。抱歉,如果我的英语不太好,我仍在学习。顺便说一句,如果您不了解日志消息的内容,请放心,只是调试消息;)。

0 个答案:

没有答案