2016-09-29 6 views
-3

Я пытаюсь создать регистрационную форму, но приложение продолжает сбой Я думаю, что это может быть URL-адрес моего виртуального эмулятора, я пробовал 10.0.2.2 и 10.0.3.2 и я проверил виртуальный ящик, чтобы узнать, какой адрес использовать, и я получил 192.168.79.2, но не работает.Добавление данных в базу данных Mysql на localhost

вот мой BackgroundTask.java класс

public class BackgroundTask extends 
        AsyncTask<String,Void,String> { 

    Context ctx; 
    BackgroundTask(Context ctx){ 

     this.ctx=ctx; 
    } 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 
    @Override 
    protected String doInBackground(String... params) { 
     String method= params[0]; 
     String reg_url="http://192.168.79.2/webapp/register.php"; 
     // String login_url="http://10.0.2.2/webapp/login.php"; 

     if(method.equals("register")){ 
      String names=params[1]; 
      String user_name=params[2]; 
      String user_pass=params[3]; 
      try { 
       URL url= new URL(reg_url); 
       HttpsURLConnection httpsURLConnection = (HttpsURLConnection) 

       url.openConnection(); 
       httpsURLConnection.setRequestMethod("POST"); 
       httpsURLConnection.setDoOutput(true); 
       OutputStream OS=httpsURLConnection.getOutputStream(); 
       BufferedWriter bufferedWriter =new BufferedWriter(new 

      OutputStreamWriter(OS, "UTF-8")); 

       String data = URLEncoder.encode("user", "UTF-8")+"="+URLEncoder.encode(names, "UTF-8")+"&"+ 
         URLEncoder.encode("user_name", "UTF-8")+"="+URLEncoder.encode(user_name, "UTF-8")+"&"+ 
         URLEncoder.encode("user_pass", "UTF-8")+"="+URLEncoder.encode(user_pass, "UTF-8"); 

       bufferedWriter.write(data); 
       bufferedWriter.flush(); 
       OS.close(); 
       InputStream IS = httpsURLConnection.getInputStream(); 
       IS.close(); 
       return "Registration success"; 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      ; 
     } 
     return null; 
    } 
    @Override 
    protected void onProgressUpdate(Void... values) { 
     super.onProgressUpdate(values); 
    } 
    @Override 
    protected void onPostExecute(String result) { 
     Toast.makeText(ctx,"result" ,Toast.LENGTH_LONG).show(); 
    } 
} 

и вот мой Register.java активность

public class Register extends Activity { 

    EditText ET_NAME, ET_USER_NAME, ET_USER_PASS; 
    String name, user_name, user_pass; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_register); 

     ET_NAME=(EditText) findViewById(R.id.name); 
     ET_USER_NAME=(EditText) findViewById(R.id.username); 
     ET_USER_PASS=(EditText) findViewById(R.id.pass); 

    } 

    public void userReg(View view){ 

     name= ET_NAME.getText().toString(); 
     user_name=ET_USER_NAME.getText().toString(); 
     user_pass=ET_USER_PASS.getText().toString(); 

     String method= "register"; 
     BackgroundTask backgroundTask = new BackgroundTask(this); 
     backgroundTask.execute(method, name, user_name, user_pass); 
     finish(); 

    } 

} 

и вот мой register.php файл

<?php 
 
require"init.php"; 
 

 
$names=$_POST["names"]; 
 
$user_name=$_POST["user_name"]; 
 
$user_pass=$_POST["user_pass"]; 
 

 
$sql_query="insert into info values('$names', '$user_name', '$user_pass');"; 
 

 
if(mysqli_query($con, $sql_query)){ 
 

 
//echo"<h3>Data insertion Success...</h3>"; 
 
} 
 
else{ 
 
//echo"Data insertion error...".mysqli_error($con); 
 
} 
 
?>

+0

какой у вас порт? для ex i have http://10.0.2.2:57714, тогда 57714 - это мой порт и проверьте приложение в вашем эмуляторе –

+0

, как я могу найти этот порт? никогда не пробовал это раньше! –

+0

попробуйте следующее: http://10.0.2.2:80/webapp/register.php сообщите мне, это работает для вас? –

ответ

0

Ваше решение

Из того, что я могу видеть, это первая линия должна быть URLEncoder.encode("user", "UTF-8")? Очевидно, ваша форма PHP показывает $names=$_POST["names"];, что означает, что переменная POST должна be names.

Если ваша база данных не настроена для нулевых переменных, она будет ошибочной.

String data = URLEncoder.encode("user", "UTF-8")+"="+URLEncoder.encode(names, "UTF-8")+"&"+ 
       URLEncoder.encode("user_name", "UTF-8")+"="+URLEncoder.encode(user_name, "UTF-8")+"&"+ 
       URLEncoder.encode("user_pass", "UTF-8")+"="+URLEncoder.encode(user_pass, "UTF-8"); 
+0

поблагодарит вас за это я исправил его, но он все равно разбился Я запустил отладчик, и он разбился в этой строке «httpsURLConnection.setRequestMethod (« POST »); –

+0

@ OdeyM.Khalaf Что говорит отладчик? –

+0

Несовместимое состояние нити: нить не подвешена –

0

Вызвать асинхронной задачи, как

ArrayList<String> params = new ArrayList<String>(); 
         params.add(name); 
         params.add(userId); 
         params.add(passw); 
         new registerTask().execute(params); 

Попробуйте:

public class registerTask extends AsyncTask<ArrayList<String>, Void, ArrayList<String>> { 

      @Override 
      protected void onPreExecute() { 
       progress1.setVisibility(View.VISIBLE); 
      } 

      protected ArrayList<String> doInBackground(ArrayList<String>... passing) { 
       ArrayList<String> result = new ArrayList<String>(); 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new HttpPost("http://192.168.79.2/webapp/register.php"); 
       String responses = null; 
       ArrayList<String> data = passing[0]; 
       String name = data.get(0); 
       String uid = data.get(1); 
       String passw = data.get(2); 
       int ik; 
       try { 
        //add data 
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
        nameValuePairs.add(new BasicNameValuePair("names", name)); 
        nameValuePairs.add(new BasicNameValuePair("user_name", uid)); 
        nameValuePairs.add(new BasicNameValuePair("user_pass", passw)); 
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
        //execute http post 
        HttpResponse response = httpclient.execute(httppost); 
//You will get the response from server in response 
        HttpEntity entity = response.getEntity(); 
        String content = EntityUtils.toString(entity); 
       } catch (ClientProtocolException e) { 
       } catch (IOException e) { 
       } 
       return "Success"; //return result 
      } 

      protected void onPostExecute(ArrayList<String> result) { 
      } 
     } 

Я не знаю, знаю, пропустил ли я что-нибудь .... Просто попробуйте это ..

0

спасибо @lefsFlare У меня была проблема с моим ввозом

i изменено с: javax.net.ssl.HttpsURLConnection; до: java.net.HttpURLConnection;

 Смежные вопросы

  • Нет связанных вопросов^_^