【问题标题】:Volley is not pulling Json data from my URLVolley 没有从我的 URL 中提取 Json 数据
【发布时间】:2020-08-19 16:53:57
【问题描述】:

人们,所以我有一个包含 JSON 数据的有效 URL,我使用 volley 提取数据,但由于某种原因它不起作用,当我更改它的 URL 时。但我需要在我的项目中将此 URL 与此数据一起使用。我认为URL的结构是问题,但我不知道如何解决它,请帮助。谢谢!

我使用的网址是https://zlatnakopacka.mk/api/TopOfferPreview_feed?source=zk


public class TestOne extends AppCompatActivity {


    String url = "https://zlatnakopacka.mk/api/TopOfferPreview_feed?source=zk";
    RecyclerView recyclerView;
    PonudiAdapter adaptor;
    ArrayList<Ponudi> ponudis;
  



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

   switchSve = findViewById(R.id.switch1);
        recyclerView = findViewById(R.id.testRecycler);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        adaptor = new PonudiAdapter(getApplicationContext());
        recyclerView.setAdapter(adaptor);
        ponudis = new ArrayList<>();

        getData("1");

        switchSve.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                if (isChecked == true) {
                    getData("sve");
                } else {
                    getData("1");
                }

            }
        });



private void getData(final String Sport) {

     //   final ProgressDialog progressDialog = new ProgressDialog(this);
     //   progressDialog.setMessage("Се вчитува...");
      //  progressDialog.show();

        ponudis.clear();

        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {

                try {
                    for (int i = 0; i < response.length(); i++) {
                        JSONObject jsonObject = response.getJSONObject(i);
                        Ponudi ponudi = new Ponudi();
                        ponudi.setSh_sport_id(jsonObject.getString("sh_sport_id"));
                        ponudi.setTim1(jsonObject.getString("tim1"));
                        ponudi.setTim2(jsonObject.getString("tim2"));
                        ponudi.setLiga_header(jsonObject.getString("liga_header"));
                        ponudi.setDatum_vreme(jsonObject.getString("datum_vreme"));
                        ponudi.setKh1(jsonObject.getString("kh1"));
                        ponudi.setKhx(jsonObject.getString("khx"));
                        ponudi.setKh2(jsonObject.getString("kh2"));
                        ponudi.setKod(jsonObject.getString("broj"));

                        if (ponudi.getSh_sport_id().equals(Sport)) {
                            ponudis.add(ponudi);
                        } if (Sport.equals("sve")) {
                            ponudis.add(ponudi);
                        }


                    }
                } catch (JSONException e) {
                    Toast.makeText(TestOne.this, "Json is not valid", Toast.LENGTH_SHORT).show();

                }

                adaptor.setData(ponudis);
                adaptor.notifyDataSetChanged();
              //  progressDialog.dismiss();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
              //  progressDialog.dismiss();
                Toast.makeText(TestOne.this, "Error", Toast.LENGTH_SHORT).show();
            }
        });

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(jsonArrayRequest);


      }

    }

【问题讨论】:

    标签: android android-volley android-json


    【解决方案1】:

    作为回应,您遇到了以下错误。

    javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: 找不到证书路径的信任锚。

    我在这里找到了一些答案是对您有帮助的参考。

    Trusting all certificates using HttpClient over HTTPS

    【讨论】:

      【解决方案2】:

      替换getData()方法

      写这个方法-

      private void getData() {
      
           //   final ProgressDialog progressDialog = new ProgressDialog(this);
           //   progressDialog.setMessage("Се вчитува...");
            //  progressDialog.show();
      
              ponudis.clear();
      
              JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
                  @Override
                  public void onResponse(JSONArray response) {
      
                      try {
                          for (int i = 0; i < response.length(); i++) {
                              JSONObject jsonObject = response.getJSONObject(i);
                              Ponudi ponudi = new Ponudi();
                              ponudi.setSh_sport_id(jsonObject.getString("sh_sport_id"));
                              ponudi.setTim1(jsonObject.getString("tim1"));
                              ponudi.setTim2(jsonObject.getString("tim2"));
                              ponudi.setLiga_header(jsonObject.getString("liga_header"));
                              ponudi.setDatum_vreme(jsonObject.getString("datum_vreme"));
                              ponudi.setKh1(jsonObject.getString("kh1"));
                              ponudi.setKhx(jsonObject.getString("khx"));
                              ponudi.setKh2(jsonObject.getString("kh2"));
                              ponudi.setKod(jsonObject.getString("broj"));
      
                              if (ponudi.getSh_sport_id().equals("1")) {
                                  ponudis.add(ponudi);
                              } else if(ponudi.getSh_sport_id().equals("sve")) {
                                  ponudis.add(ponudi);
                              }
      
      
                          }
                      } catch (JSONException e) {
                          Toast.makeText(TestOne.this, "Json is not valid", Toast.LENGTH_SHORT).show();
      
                      }
      
                      adaptor.setData(ponudis);
                      adaptor.notifyDataSetChanged();
                    //  progressDialog.dismiss();
                  }
              }, new Response.ErrorListener() {
                  @Override
                  public void onErrorResponse(VolleyError error) {
                    //  progressDialog.dismiss();
                      Toast.makeText(TestOne.this, "Error", Toast.LENGTH_SHORT).show();
                  }
              });
      
              RequestQueue requestQueue = Volley.newRequestQueue(this);
              requestQueue.add(jsonArrayRequest);
      
      
            }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-05
        • 1970-01-01
        • 2017-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多