2014-09-21 6 views
0

이틀 후 저는 이미 내 안드로이드 프로젝트에 문제가 있습니다. 인증 테스트를 실현했습니다. 내 수업 editText에서 숫자를받은 다음 번호를 데이터베이스에서받은 여부를 확인하는 신중하게 PHP 스크립트에 다시이 문제를 제공합니다. 나에게 약간의 시간을 제공 주셔서 감사합니다 :Android 포스트 요청이 실패했습니다.

이 내 수업

package com.androidproject.myFirstApp; 

import android.app.Activity; 
import android.app.AlertDialog; 


import java.io.BufferedReader; 
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.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.text.TextUtils; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.Toast; 

public class LoginActivity extends Activity 
{ 
    EditText inputpinCode; 
    CheckBox checkBox; 
    Button btnLogin; 


    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login); 

     setTitle("Welcome"); 


     inputpinCode = (EditText) findViewById(R.id.loginpinCode); 
     checkBox = (CheckBox)findViewById(R.id.cbRememberMe); 
     btnLogin = (Button) findViewById(R.id.btnLogin); 


     SharedPreferences pref = getSharedPreferences(PREFS_NOM,MODE_PRIVATE); 
     String pinCode = pref.getString(PREF_pinCode, ""); 
     String checked = pref.getString(PREF_CHECKED, ""); 

     inputpinCode.setText(pinCode); 
     checkBox.setChecked(Boolean.parseBoolean(checked)); 


     btnLogin.setOnClickListener(new View.OnClickListener() 
     {   
      public void onClick(View view) 
      { 

       boolean error = true; 
       @SuppressWarnings("unused") 
       long val = 0; 
       String pinCode = inputpinCode.getText().toString(); 
       if (!TextUtils.isEmpty(pinCode)) { 
        try { 
         val = Long.valueOf(pinCode); 
         error = false; 
        } 
        catch(NumberFormatException e) { 
         Log.w("Error", e); 
        } 
       } 
       if (error) {     
        Toast.makeText(getBaseContext(),"Please enter your pin code.",Toast.LENGTH_SHORT).show(); 
       }else{ 

        if ((pinCode != null) && (pinCode.trim().length() == 8)) { 

         ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
         nameValuePairs.add(new BasicNameValuePair("tag", "login")); 
         nameValuePairs.add(new BasicNameValuePair("pinCode", pinCode)); 

         try 
         { 
          Boolean isInternetPresent = false; 
          ConnectionDetector cd; 

          cd = new ConnectionDetector(getApplicationContext()); 
          isInternetPresent = cd.isConnectingToInternet(); 
          if (isInternetPresent) {       

          HttpClient httpclient = new DefaultHttpClient(); 
          HttpPost httppost = new HttpPost("http://matanddin.zz.mu/android_app/auth.php"); 
          httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
          HttpResponse response = httpclient.execute(httppost); 
          HttpEntity entity = response.getEntity(); 
          InputStream is = entity.getContent(); 
          BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
          StringBuilder sb = new StringBuilder(); 
          String line = reader.readLine(); 
          sb.append(line + "\n"); 
          is.close(); 



          String result = sb.toString(); 
          JSONObject jObj = new JSONObject(result); 



          if (jObj.getString(KEY_SUCCESS) != null) 
          { 
           String res = jObj.getString(KEY_SUCCESS); 

           if(Integer.parseInt(res) == 1) 
           { 

            //Add user in db sqlite 
            Toast.makeText(getApplicationContext(), "User ok!!!", Toast.LENGTH_SHORT).show(); 

           } 

           /* Si il vaut 0, user inconnu*/ 
           else 
           { 

            AlertDialog buildexit = new AlertDialog.Builder(LoginActivity.this) 
            .setTitle("Bad user!") 
            .setIcon(R.drawable.ic_launcher) 
            .setMessage("I don't know you. You want create à new account?") 
            .setPositiveButton("Yes", new OnClickListener() { 

             @Override 
             public void onClick(DialogInterface dialog, int which) { 

              Intent i = new Intent(LoginActivity.this, RegisterActivity.class); 
              startActivity(i); 
              finish();     
             } 
            }) 
            .setNegativeButton("No", new OnClickListener() { 
             @Override 
             public void onClick(DialogInterface dialog, int which) { 
              dialog.dismiss();     
             } 
            }) 
            .create(); 
            buildexit.show(); 
           } 
          } 
          }else { 

           Toast.makeText(getBaseContext(),"Requiered internet connection",Toast.LENGTH_SHORT).show(); 
          } 
         } 
         catch(Exception e) 
         { 
          Log.w("W", e); 
          Toast.makeText(getBaseContext(),"error.",Toast.LENGTH_SHORT).show(); 
         } 

        }else{ 
         Toast.makeText(getBaseContext(),"pin incorrect.",Toast.LENGTH_SHORT).show(); 
         return; 
        } 
       } 
      } 
     }); 
    } 
} 

쿼리가 여기에 있지 성공하고는

시 이클립스 대답

09-21 07:58:02.879: W/W(8410): android.os.NetworkOnMainThreadException 
09-21 07:58:02.879: W/W(8410): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 
09-21 07:58:02.879: W/W(8410): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 
09-21 07:58:02.879: W/W(8410): at java.net.InetAddress.lookupHostByName(InetAddress.java:391) 
09-21 07:58:02.879: W/W(8410): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242) 
09-21 07:58:02.879: W/W(8410): at java.net.InetAddress.getAllByName(InetAddress.java:220) 
09-21 07:58:02.879: W/W(8410): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 
09-21 07:58:02.879: W/W(8410): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
09-21 07:58:02.879: W/W(8410): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
입니다!

+0

당신은 AsyncTask를에서 POST 요청을 수행해야이를 추가하려고합니다. – Bob

+0

고마워요! 나는 시험해 본다 –

답변

0

AsyncTask를 작동하지 않는 경우에서 onCreate 방법

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 
+0

안녕하세요. @Rohodude, 도와 줘서 고맙습니다. AsyncTask가 큰 성공을 거두지 않았다면 방금 당신의 방법을 시도했습니다. 나는 여전히 같은 걱정이있다. 내 코드는 PHP에 editText 정보를 게시 할 수 없습니다. Ps : 저는 초보자이며 이것은 Android and Java에서의 첫 번째 실제 프로젝트입니다 –

+0

manifest 파일에서 인터넷을 사용하도록 설정 했습니까? – Rohodude

+0

네! 매니페스트 파일에 입력 한 권한은 다음과 같습니다

관련 문제