6

जब मैं अनुप्रयोग चलाने मैं निम्न त्रुटि हो रही है: BasicNetwork.performRequest: अप्रत्याशित प्रतिक्रिया कोड 401एंड्रॉयड: वॉली HTTP अनुरोध कस्टम हेडर

मैं एक ईमेल, पासवर्ड और उपयोग करने के लिए एक टोकन पास करनी होगी यूआरएल है, लेकिन यह काम नहीं कर रहा

मैं एंड्रॉयड पिछले सप्ताह सीखना शुरू कर दिया, मैं बहुत

package quest.testvolley; 

import com.android.volley.AuthFailureError; 
import com.android.volley.VolleyLog; 
import com.kpbird.volleytest.R; 

import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.app.Activity; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
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.JsonObjectRequest; 
import com.android.volley.toolbox.Volley; 
import org.json.JSONArray; 
import org.json.JSONObject; 

import java.net.URL; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Map; 

public class MainActivity extends Activity { 

    private String TAG = this.getClass().getSimpleName(); 
    private ListView lstView; 
    private RequestQueue mRequestQueue; 
    private ArrayList<NewsModel> arrNews ; 
    private LayoutInflater lf; 
    private VolleyAdapter va; 
    private ProgressDialog pd; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     lf = LayoutInflater.from(this); 

     arrNews = new ArrayList<NewsModel>(); 
     va = new VolleyAdapter(); 

     lstView = (ListView) findViewById(R.id.listView); 
     lstView.setAdapter(va); 
     mRequestQueue = Volley.newRequestQueue(this); 
     String url = "http://192.168.1.18/repr/api/clientes/Y2FtcG9zKGlkLG5vbWUsc3RhdHVzKTppnaW1pdCgxMCk6b2Zmc2V0KDApOm9yZGVtKG5vbWVbYXNjXSk="; 
     pd = ProgressDialog.show(this,"Please Wait...","Please Wait..."); 
     try{ 

      Thread.sleep(2000); 
     }catch(Exception e){} 

     JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST, url, null, new Response.Listener<JSONObject>() { 

      @Override 
      public void onResponse(JSONObject response) { 

       Log.d(TAG, response.toString()); 
       pd.hide(); 
      } 
     }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 

       VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       pd.hide(); 
      } 
     }) { 

      @Override 
      protected Map<String, String> getParams() { 

       Map<String, String> params = new HashMap<String, String>(); 
       params.put("email", "[email protected]"); 
       params.put("senha", "test"); 
       params.put("X-API-TOKEN", "99KI9Gj68CgCf70deM22Ka64chef2C40Gm2lFJ2J0G9JkD0afd19MfacGf3FFm8CM1hG0eDiIk8"); 

       return params; 
      } 
     }; 

     mRequestQueue.add(jsonObjReq); 
    } 

उत्तर

14

JsonObjectRequest देखें JsonRequest बढ़ाया है जो ओवरराइड getBody() विधि सीधे है, तो आपके getParam() आह्वान कभी नहीं होगा, मैं तुम्हें StringRequest बजाय JsonObjectRequest विस्तार की सिफारिश ।

आप अधिक जानकारी के लिए this उत्तर देख सकते हैं।

रास्ते में, आपके पास एक और विकल्प है: Netroid, जो वॉली आधारित है, ने और अधिक सुविधाएं प्रदान की हैं।

+0

ही prm, लेकिन मैं सर्वर से JSON ऑब्जेक्ट भेजना चाहती है चाहिए। तो मेरे लिए इस समस्या को हल करना कैसे संभव हो सकता है?? – John

1

आप अपने मानचित्र एक JSON वस्तु के रूप में भेजना चाहते हैं (आप वर्ग JsonObjectRequest उपयोग कर रहे हैं) पता नहीं है , आपको इसे JsonobjectRequ में रखना चाहिए स्था निर्माता:

HashMap<String, String> params = new HashMap<String, String>(); 
params.put("email", "[email protected]"); 
params.put("senha", "test"); 
params.put("X-API-TOKEN", "99KI9Gj68CgCf70deM22Ka64chef2C40Gm2lFJ2J0G9JkD0afd19MfacGf3FFm8CM1hG0eDiIk8"); 

JsonObjectRequest jsonObjReq = new JsonObjectRequest(url, new JSONObject(params), ..., ...); 

this tuto

+2

के लिए काम किया अभी भी मेरे लिए भी काम नहीं कर रहा – AND4011002849

0

इस एक मुझे (Volley JsonObjectRequest Post parameters no longer work पर देखा)

String url = "https://www.youraddress.com/"; 

Map<String, String> params = new HashMap(); 
params.put("first_param", 1); 
params.put("second_param", 2); 

JSONObject parameters = new JSONObject(params); 

JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.GET, url, parameters, new Response.Listener<JSONObject>() { 
    @Override 
    public void onResponse(JSONObject response) { 
     //TODO: handle success 
    } 
}, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     error.printStackTrace(); 
     //TODO: handle failure 
    } 
}); 

Volley.newRequestQueue(this).add(jsonRequest); 
संबंधित मुद्दे