【问题标题】:Volley JsonObject Request (method get) not workingVolley JsonObject 请求(方法获取)不起作用
【发布时间】:2018-09-01 06:03:24
【问题描述】:

我正在使用 volley 连接到我的 REST Web 服务。我有一个返回 json 对象的 .php 地址。我在我的 android 应用程序中使用此代码来获取此对象:

public void  getData() {
        final ProgressDialog progressDialog =  new ProgressDialog(this);
        progressDialog.setMessage("Loading...");
        progressDialog.show();

        JsonObjectRequest jsonArrayRequest = new JsonObjectRequest(Request.Method.GET,URI_AZMOON_QUESTIONS,null,
                new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                String s="t";
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("Volley", error.toString());
                progressDialog.dismiss();
            }
        });
        requestQueue.add(jsonArrayRequest);
    }

但此请求从未运行。我的意思是当我调试程序时,它从不使用onResponseonErrorResponse 方法。

更新
这是我的代码:

import android.app.ProgressDialog;
import android.content.Context;
import android.net.ConnectivityManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.shaz.zist.Adapter.AzmoonsAdapter;
import com.shaz.zist.Models.AzmoonQuestion;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

import WebService.WebService;


public class GroupQuizActivity extends AppCompatActivity implements View.OnClickListener {
public static final String URI_AZMOON_QUESTIONS = "http://zahra-t.zili.ir/azmoon/read.php";
    List<AzmoonQuestion> azmoons=new ArrayList<>();
    AzmoonsAdapter adapter;
    LinearLayout noNetwork;
    ListView azmoonList;
    ImageView refresh;
    RequestQueue requestQueue;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_group_quiz);
        noNetwork=findViewById(R.id.noconection);
        azmoonList=findViewById(R.id.quizesList);
        refresh=findViewById(R.id.refresh);
        refresh.setOnClickListener(this);
        requestQueue = Volley.newRequestQueue(this);
        checkNetworkConnection();
    }

    private void checkNetworkConnection() {
        ConnectivityManager connectivityManager =  (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
         boolean netResult=false;
         if(connectivityManager.getActiveNetworkInfo()!=null)
         netResult=connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting();
         if(!netResult){
             noNetwork.setVisibility(View.VISIBLE);
         }
         else{
             noNetwork.setVisibility(View.GONE);
             setUpListView();
         }
    }

    private void setUpListView() {
        WebService wb=new WebService(this,azmoons);
        adapter=new AzmoonsAdapter(this,azmoons);
        azmoonList.setAdapter(adapter);
        getData();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.refresh:{
                checkNetworkConnection();
                break;
            }
        }
    }
    public void  getData() {
        final ProgressDialog progressDialog =  new ProgressDialog(this);
        progressDialog.setMessage("Loading...");
        progressDialog.show();
        /*StringRequest rs=new StringRequest(URI_AZMOON_QUESTIONS, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                String ss=response;
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });*/
        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, URI_AZMOON_QUESTIONS, null,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {

                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("Volley", error.toString());
                progressDialog.dismiss();
            }
        });
        requestQueue.add(jsonArrayRequest);
    }
}

【问题讨论】:

  • but this request never runnig. 可以解释一下吗?
  • 我编辑我的问题
  • 您是否在清单中启用了 Internet 权限?,也请尝试记录您的 onResponse 消息。
  • @W4R10CK 是的,我已经添加了它。
  • 请分享整个活动代码。

标签: android rest android-volley


【解决方案1】:

尝试使用 StringRequest 代替 JsonArrayRequest(StringRequest 总是对我有用)

   StringRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, URI_AZMOON_QUESTIONS,
        new Response.Listener<String>() {@Override
                public void onResponse(JSONArray response) {

                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("Volley", error.toString());
            progressDialog.dismiss();
        }
    });
    requestQueue.add(jsonArrayRequest);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 2018-09-22
    • 2013-11-19
    • 2015-07-03
    • 2022-07-25
    相关资源
    最近更新 更多