2016-09-29 2 views
-3

등록 양식을 만들려고하지만 앱이 계속 충돌 함 내 가상 에뮬레이터 URL 양식 일 수 있다고 생각합니다. 10.0.2.2 및 10.0.3.2를 시도하고 확인했습니다. 가상 상자를 사용하여 사용할 주소를 확인하고 192.168.79.2가 있지만 그 중 일부는 작동하지 않습니다. 여기 로컬 호스트의 MySQL 데이터베이스에 데이터 추가

내 register.php 파일 내 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(); 

    } 

} 

이며, 여기

<?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); 
 
} 
 
?>
(210)

+0

귀하의 포트는 무엇입니까? 전 전 예를 들어 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 변수 이되어야합니다. 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에 감사드립니다. 내 수입에 문제가있었습니다.

변경된 항목 : javax.net.ssl.HttpsURLConnection; 다음으로 변경 : java.net.HttpURLConnection;

관련 문제