2016-09-25 10 views
0

私はAndroidアプリケーションにJsonファイルを取得しようとしています。私は、これは私のコードの一部であるTomcatを使用しています:ここでokhttpClientを使用してURLに接続してJsonを取得しようとしています

final String servidor = "10.0.2.2:8080/ProjetoTCC"; 
public class UserLoginTask extends AsyncTask<Void, Void, Boolean> { 

    private final String mEmail; 
    private final String mPasswordU; 

    UserLoginTask(String email, String password) { 
     mEmail = email; 
     mPasswordU = password; 
    } 

    @Override 
    protected Boolean doInBackground(Void... params) { 

     requester = new MoradorRequester(); 

     if(requester.isConnected(LoginActivity.this)) { 
      intent = new Intent(LoginActivity.this, UserAreaActivity.class); 

      try { 
       morador = requester.get("http://" + servidor + "/ValidacaoLoginAndroid.json", mEmail, mPasswordU); 


         intent.putExtra("MORADOR", morador); 
         if(morador.getValidacao() == true){ 
         startActivity(intent);} 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     }else{ 
      Toast toast = Toast.makeText(LoginActivity.this, "Rede indisponível!", Toast.LENGTH_LONG); 
      toast.show(); 
     } 

     return false; 
    } 

私はメソッドMoradorRequester呼び出し()接続して、JSONオブジェクトを取得しようとしています。ここMoredorリクエスタは()です:

try { 
     JSONArray root = new JSONArray(jsonStr); 
     JSONObject item = null; 
     for (int i = 0; i < root.length(); i++) { 
      item = (JSONObject) root.get(i); 

      morador.setNome(item.getString("nome_completo")); 
      morador.setDataNascimento(item.getString("data_nascimento")); 
      morador.setnApartamento(item.getInt("n_apartamento")); 
      morador.setEmail(item.getString("email")); 
      morador.setValidacao((Boolean) item.get("validacao")); 

     } 

    } catch(JSONException e){ 
     e.printStackTrace(); 
    } 
finally { 
    if(morador == null) 
     morador.setDataNascimento("10/10/2010"); 
     morador.setEmail("email"); 
     morador.setnApartamento(0); 
     morador.setNome("Sem Nome"); 
     morador.setDataNascimento("10/10/2010"); 
     morador.setValidacao(true); 
} 

リクエスタはJSONをつかむと、私はいつも、私は最終的に上に作成し、デフォルトのユーザーを受け取ることができません。

Androidを「String jsonStr = response.body()。string();」を実行するとエラーが発生しました。エラーは以下の通りである。また、

Response{protocol=http/1.1, code=404, message=Not Found, url=http://10.0.2.2:8080/ProjetoTCC/ValidacaoLoginAndroid.json} 

、私はAndroidのモニターに次のエラーを受け取った:

09-25 19:24:01.080 2414-2977/com.example.arthurf.tcc.app W/System.err: org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONArray 
09-25 19:24:01.115 2414-2977/com.example.arthurf.tcc.app W/System.err:  at org.json.JSON.typeMismatch(JSON.java:111) 
09-25 19:24:01.115 2414-2977/com.example.arthurf.tcc.app W/System.err:  at org.json.JSONArray.<init>(JSONArray.java:96) 
09-25 19:24:01.115 2414-2977/com.example.arthurf.tcc.app W/System.err:  at org.json.JSONArray.<init>(JSONArray.java:108) 
09-25 19:24:01.115 2414-2977/com.example.arthurf.tcc.app W/System.err:  at network.MoradorRequester.get(MoradorRequester.java:52) 
09-25 19:24:01.117 2414-2977/com.example.arthurf.tcc.app W/System.err:  at com.example.arthurf.tcc.app.Controller.LoginActivity$UserLoginTask.doInBackground(LoginActivity.java:220) 
09-25 19:24:01.117 2414-2977/com.example.arthurf.tcc.app W/System.err:  at com.example.arthurf.tcc.app.Controller.LoginActivity$UserLoginTask.doInBackground(LoginActivity.java:201) 
09-25 19:24:01.117 2414-2977/com.example.arthurf.tcc.app W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:295) 
09-25 19:24:01.117 2414-2977/com.example.arthurf.tcc.app W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
09-25 19:24:01.117 2414-2977/com.example.arthurf.tcc.app W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
09-25 19:24:01.117 2414-2977/com.example.arthurf.tcc.app W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
09-25 19:24:01.117 2414-2977/com.example.arthurf.tcc.app W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
09-25 19:24:01.117 2414-2977/com.example.arthurf.tcc.app W/System.err:  at java.lang.Thread.run(Thread.java:818) 

は、私はすでにJSONをテストし、それは私が、私が必要なものを返し、正常に動作しているようですこれは、Androidとサーバーの間の接続に問題があると考えています。

あなたがしたい場合は、GitHubの上で私のコードを確認することができます。

https://github.com/ArthurFranchetto/TCCTest1.git

は、私が何かを逃したことがありますか?

ありがとうございます。

答えて

0

なぜRETROFIT 1.9を試してみませんか?

http://square.github.io/retrofit/

RETROFITは遠く道はるかに使いやすいだけOKHTTPとJsonObjectsを使用するよりもAndroidのためのRESTクライアントAPIです...

1.9バージョンはGSONを使用して自動JSONの構文解析を行い、 OKHTTPであり、コールバックを使用してデータをBeanオブジェクトとして取得するだけで済みます。

アプリを開発するためのガイドとして使用することができます。このプロジェクト:

https://github.com/elcioabrahao/PDV_2016

[]さん

関連する問題