尝试使用okhttpClient连接到URL以获取Json

时间:2016-09-25 22:45:26

标签: android json tomcat

我试图将Json文件添加到我的Android应用中。我使用Tomcat这是我的代码的一部分:

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,我总是收到我在finally上创建的默认用户。

我尝试调试,当Android运行&#34; String jsonStr = response.body()时,我收到错误。字符串();&#34;错误如下:

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

我错过了什么吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

为什么不试试RETROFIT 1.9?

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

RETROFIT是Android的REST客户端API,远比仅使用OKHTTP和JsonObjects更容易使用......

1.9版本使用GSON和OKHTTP进行自动Json解析,你只需要使用回调来获取数据作为你的bean对象。

您可以使用此项目作为开发应用的指南:

https://github.com/elcioabrahao/PDV_2016

[]&#39; S