我无法使用Volley进行网络通话

编程入门 行业动态 更新时间:2024-10-10 00:30:25
本文介绍了我无法使用Volley进行网络通话的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

当我使用jsonObject请求进行网络调用时。我没有收到任何回应。在我的URL之前,我总是收到request =< []的HTTP响应。

Android Volley double post当请求缓慢时:

解决方案使用 StringRequest 获取Json响应

private void callApi(){ RequestQueue mrequestQueue; StringRequest stringRequest; mrequestQueue = Volley.newRequestQueue(this); stringRequest = new StringRequest(Request.Method.GET,DATA_URL,new Response.Listener< String>(){ @Override public void onResponse(String response){ try { JSONObject jsonObject = new JSONObject(response); System.out.println(json+ jsonObject); } catch(JSONException e){ e.printStackTrace(); } },新的Response.ErrorListener (){ @Override public void onErrorResponse(VolleyError error){ //Log.i(TAG,Response:+ error.toString()); } }); mrequestQueue.add(stringRequest); }

When I am making a network call using jsonObject request. I am not receiving any response. I always receive HTTP response for request=<[ ] before my URL. I have tried these links as well but nothing worked for me.

Android Volley double post when have slow request:

Source1, source2, Source 3

package com.example.mts3.hammadnewsapp; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; import android.widget.Toast; import com.android.volley.DefaultRetryPolicy; 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.JsonObjectRequest; import com.android.volley.toolbox.Volley; import org.json.JSONObject; import java.util.ArrayList; public class NewsDetailsActivity extends AppCompatActivity { RecyclerView recyclerView; NewsAdapter adapter; ArrayList<NewsOpen> newsList =new ArrayList<>(); Intent intent; TextView tv_newsheading; SharedPreferences sharedPreferences; SharedPreferences.Editor editor; Context context; String DATA_URL="ec2-54-147-238-136pute-1.amazonaws/hmc/api/getnewsfeeds?order=asc"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_news_details); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); newsList = new ArrayList<>(); recyclerView = findViewById(R.id.rv_newsdetails); recyclerView.setLayoutManager(new LinearLayoutManager(this)); adapter = new NewsAdapter(this, newsList); String string = (String) getText(R.string.random_text); newsList.add(new NewsOpen(R.drawable.hdr_bg_plain, "Chief Medical Officer", "10-11-2020", string)); // newsList.add(new NewsOpen("image!!", "Chief Medical Officer", "10-11-2020", string)); recyclerView.setAdapter(adapter); /*backgroundTask.getList(new BackgroundTask.arrayCallBack() { @Override public void onSuccess(ArrayList<Contact> contacts) { adapter = new RecyclerAdapter(contacts); recyclerView.setAdapter(adapter); } @Override public void onFail(String msg) { // Do Stuff } });*/ } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_news_list, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_share) { //Toast.makeText(NewsDetailsActivity.this, "Share menu clicked ", Toast.LENGTH_LONG).show(); callApi(); return true; } if (id == R.id.action_logout) { sharedPreferences= PreferenceManager.getDefaultSharedPreferences(this); editor= sharedPreferences.edit(); editor.putBoolean("Verified user",false); editormit(); Toast.makeText(NewsDetailsActivity.this,"Logged out ",Toast.LENGTH_LONG).show(); Intent intent=new Intent(NewsDetailsActivity.this,MainActivity.class); startActivity(intent); return true; } return super.onOptionsItemSelected(item); } private void callApi() { // new DefaultRetryPolicy(30000, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); // int x=3;// retry count // DefaultRetryPolicy defaultRetryPolicy=new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS*1,x,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); //DefaultRetryPolicy defaultRetryPolicy= new DefaultRetryPolicy(20 * 1000, 0, 1.0f); RequestQueue requestQueue= Volley.newRequestQueue(this); //System.setProperty("http.keepAlive", "false"); JsonObjectRequest jsonObject =new JsonObjectRequest(Request.Method.GET,DATA_URL, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.e("res",response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }); //int x=2;// retry count //jsonObject.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 48, x, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); //jsonObject.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 48,0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); //jsonObject.setRetryPolicy(new DefaultRetryPolicy(0, -1, 0)); //jsonObject.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); //jsonObject.setRetryPolicy(new DefaultRetryPolicy(0,-1, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); /*jsonObject.setRetryPolicy( new DefaultRetryPolicy( 500000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT ) );*/ //jsonObject.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); //new DefaultRetryPolicy(10000, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); //jsonObject.setRetryPolicy(new DefaultRetryPolicy(0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); //jsonObject.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); //int socketTimeout = 30000;//30 seconds - change to what you want // RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); // jsonObject.setRetryPolicy(policy); int custom_timeout_ms = 10000; DefaultRetryPolicy policy = new DefaultRetryPolicy(custom_timeout_ms, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); jsonObject.setRetryPolicy(policy); requestQueue.add(jsonObject); } }

解决方案

Another Solution using StringRequest to get Json Response

private void callApi() { RequestQueue mrequestQueue; StringRequest stringRequest; mrequestQueue = Volley.newRequestQueue(this); stringRequest = new StringRequest(Request.Method.GET, DATA_URL, new Response.Listener<String>() { @Override public void onResponse(String response) { try { JSONObject jsonObject = new JSONObject(response); System.out.println("json"+jsonObject); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { //Log.i(TAG, "Response: " + error.toString()); } }); mrequestQueue.add(stringRequest); }

更多推荐

我无法使用Volley进行网络通话

本文发布于:2023-11-26 05:11:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1632767.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:网络   Volley

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!