2016-05-26 9 views
0

Ich sende POST-Anfrage mit Volley. Anfrage hat benutzerdefinierte Header und JSON-Anfragetext. Einer der JSON-Werte im Anfragetext ist eine URL. Wenn ich ein Jsonobject anlege, wird die // in URL als \/\/gesendet. (zB "key1:" http // www.xyz.com "wird als" key1 "gesendet:" http: \/\/www.xyz.com " Dies verursacht einen Fehler von 400. Wie behebe ich das?wie NICHT Schrägstriche zu entkommen, senden POST-Anfrage mit Volley

Hier ist der POST-Volley.

RequestQueue queue = Volley.newRequestQueue(this); 

     try{ 
      jsonBody = new JSONObject(); 
      jsonBody.put("Key1","http://xyz1.com"); 
      jsonBody.put("Key2","val2"); 

     } 
     catch (JSONException e){ 

     } 


     JsonObjectRequest req = new JsonObjectRequest(Request.Method.POST,URL, jsonBody, 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 
         // handle response 
         Log.d("MAIN","response recd="+response.toString()); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       // handle error 
      } 
     }) { 



      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       HashMap<String, String> headers = new HashMap<String, String>(); 
       headers.put("CUSTOM_HEADER", "Yahoo"); 
       headers.put("ANOTHER_CUSTOM_HEADER", "Google"); 
       return headers; 
      } 


     }; 

     queue.add(req); 

Antwort

0

die json Werte korrekt formatiert wurden überprüft von jsonbody.get priting ("Schlüssel") die Schrägstriche entkommen, wenn die json .toString mit Ausdrucken

.

Für meinen Fall wurde der Fehler 400 durch Hinzufügen von Header behoben: params.put ("Content-Typ", "application/json; charset = utf-8");