2017-02-24 17 views
1

Androidの初心者で、助けが必要です。Androidからのログイン画面

{ 
    "Id": 1, 
    "Name": "user", 
    "userId": 4, 
    "active": true, 
    "ProfileId": 1, 
    "Tema": "green", 
    "Language": "english", 
    "success": true, 
    "error": false 
} 

JSON 2:このためには

public class MainActivity extends AppCompatActivity { 

    EditText usernameWidget; 
    EditText passwordWidget; 


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

     usernameWidget = (EditText) findViewById(R.id.tv_username); 
     passwordWidget = (EditText) findViewById(R.id.tv_password); 

    }// END ON CREATE 

    public class DownloadTask extends AsyncTask<String, Void, String> { 
     String message = "message"; 
     String loginSuccess; 
     String Id = "Id"; 


     @Override 
     protected String doInBackground(String... urls) { 
      String result = ""; 
      URL url; 
      HttpURLConnection urlConnection = null; 

      try { 
       url = new URL(urls[0]); 
       urlConnection = (HttpURLConnection) url.openConnection(); 
       InputStream inputStream = urlConnection.getInputStream(); 
       InputStreamReader reader = new InputStreamReader(inputStream); 

       int data = reader.read(); 

       while (data != -1){ 
        char current = (char) data; // each time creates a char current 

        result += current; 

        data = reader.read(); 
       } 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      return result; 
     } // END doInBackground 


     //Method called when the doInBack is complete 
     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 

      try { 
       JSONObject jsonObject = new JSONObject(result); 
       Log.i("***JSON ITSELF***", result); 


       loginSuccess = jsonObject.getString("success"); 
       Log.i("*****LOGIN SUCCESS*****", loginSuccess); 
       message = jsonObject.getString("message"); 
       Log.i("*****MESSAGE*****", message); 
       Id = jsonObject.getString("Id"); 
       Log.i("*****ID*****", pessoaFisicaId); 



      }catch(JSONException e) { 
       e.printStackTrace(); 
      }// END CATCH 

      if (loginSuccess.contains("true")){ 

       Intent intent = new Intent(getApplicationContext(), SecondActivity.class); 
       startActivity(intent); 
      }else if (loginSuccess.contains("false")){ 

       Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show(); 
      } 
     }// END POST EXECUTE 
    }// END Download Task 

    public void login(View view) { 
     String user = usernameWidget.getText().toString(); 
     String pass = passwordWidget.getText().toString(); 

     String stringJSON = "*URL*login=" + user + "&senha=" + pass; 
     DownloadTask task = new DownloadTask(); 
     task.execute(stringJSON); 
     Log.i("*****JSON URL*****", stringJSON); 

    }// END LOGIN 
}// END MAIN 

   loginSuccess = jsonObject.getString("success"); 

       message = jsonObject.getString("message"); 

       Id = jsonObject.getString("Id"); 
これは私のコードである

{"message":"no user or password","success":false,"erroAplicacao":false} 

私はこのようになりますJSONを持っています

json2(別のURL)からToastとしてメッセージ(「no user or password」)が届きました。

私は順序を変更した場合に、言うことができます:私はメッセージを取得ドント

 loginSuccess = jsonObject.getString("success"); 

     Id = jsonObject.getString("Id"); 

     message = jsonObject.getString("message"); 

。実際、DownloadTaskクラスの先頭にあるStringメッセージから値 "message"を取得します。

jsonは2つの値を取得しているようですが、私が最初に求める値です。

一つのことはしかし、ユーザまたはパスワードが間違っている場合にのみ、JSONメッセージ(json2)があることであるということである:私のJSONは配列のJSONに変換するカントので

{"message":"no user or password","success":false,"erroAplicacao":false} 

を(私が試したとなりました私は何をすべきですか?

答えて

0

jsonObject.getString("your_string")に電話すると、文字列が見つからない場合はJSONExceptionとなります。したがって、メソッド内のコードの残りの行は実行されません。あなたのLogCatの設定をのに変更してください。あなたは何が起こっているか見ることができます。ここgetString()法上の

さらに詳しい情報: https://developer.android.com/reference/org/json/JSONObject.html#getString(java.lang.String)

+0

が、これはよりよく理解JSONで私をたくさん助けた、ありがとうございます。 xD – BlitzkriegBlue

+0

もう一度、たくさんのthx。あなたの答えのために、ここでもっと便利で簡単なコーディングのためにjsonを修正することに決めました。 xD – BlitzkriegBlue

+0

@ArthurAbreu問題ありません!この回答が役に立ちましたら、このページの正しい回答として選択してください。 –

0

使用GSON

public class User{ 
    private int Id; 
    private String Name; 
} 

解析

User user = GSON.fromJSON(jsonString, User.class); 
関連する問題