2017-04-03 2 views
0

Ich habe einen Beitrag mit voley zu senden, aber wenn ich versuche, Rohkarosse zu senden, wie verlangt, statt einer Antwort eines bekomme diese FehlerAndroid Senden POST von JSON Rohkarosse mit Volley

***** * com.android.volley.ServerError ******: { „message“: „Keine Benutzerkontodaten für die Registrierung erhalten“}

habe ich versucht, das gleiche in Postbote und es funktioniert perfekt, wie kann Ich repariere es in meinem Code?

Rohkarosse, die in Postbote arbeitet ->

{ 
    "camp1": { 
     "value": "value" 
    }, 
    "camp2": { 
     "value": "value2" 
    } 
} 

das ist, was es in meinem Code ist ->

public void requestRegistrationInfo(@NonNull final String camp1, @NonNull final String camp2,final Listener listener) { 
      RequestQueue requestQueue = Volley.newRequestQueue(context); 
      requestQueue.add(new JsonObjectRequest(
        Request.Method.POST, URL, 
        new Response.Listener<JSONObject>() { 
         @Override 
         public void onResponse(JSONObject response) { 
          Log.v("IT WORK"); 
          listener.onSuccess(); 
         } 
        }, 
        new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 
          Log.e("******" + error.toString() + "******", getErrorMessage(error)); 
          listener.onFailure(); 
         } 
        }) 
{ 

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

        Map<String, String> map = new HashMap<>(); 
        map.put("{camp1", "value"); 
        map.put("camp2", "value"); 

        return map; 
       } 

       @Override 
       public Map<String, String> getHeaders() throws AuthFailureError { 
        Map<String, String> map = new HashMap<>(); 
        map.put("header1", "header1"); 
        map.put("header2", "header2"); 
        return map; 
       } 
      }); 
     } 

was kann ich richtig roh json senden tun und nicht zeigen der Fehler?

Antwort

0
try { 
RequestQueue requestQueue = Volley.newRequestQueue(this); 
String URL = "http://..."; 
JSONObject jsonBody = new JSONObject(); 
jsonBody.put("Title", "Android Volley Demo"); 
jsonBody.put("Author", "BNK"); 
final String requestBody = jsonBody.toString(); 

StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() { 
    @Override 
    public void onResponse(String response) { 
     Log.i("VOLLEY", response); 
    } 
}, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     Log.e("VOLLEY", error.toString()); 
    } 
}) { 
    @Override 
    public String getBodyContentType() { 
     return "application/json; charset=utf-8"; 
    } 

    @Override 
    public byte[] getBody() throws AuthFailureError { 
     try { 
      return requestBody == null ? null : encodeParameters(requestBody , getParamsEncoding()); 
     } catch (UnsupportedEncodingException uee) { 
      VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8"); 
      return null; 
     } 
    } 

    @Override 
    protected Response<String> parseNetworkResponse(NetworkResponse response) { 
     String responseString = ""; 
     if (response != null) { 
      responseString = String.valueOf(response.statusCode); 
      // can get more details such as response.headers 
     } 
     return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response)); 
    } 
}; 

requestQueue.add(stringRequest); 
} catch (JSONException e) { 
e.printStackTrace(); 
} 

Bitte überprüfen Sie mit dem bearbeiteten getBody()

@Override 
    public byte[] getBody() throws AuthFailureError { 
     try { 
      return requestBody == null ? null : encodeParameters(requestBody , getParamsEncoding()); 
     } catch (UnsupportedEncodingException uee) { 
      VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8"); 
      return null; 
     } 
    } 
+0

diesen Code verwenden, kommt es diesen Fehler -> ***** * com.android.volley.ServerError ******: {"message": "Nicht akzeptables format: json"} – Liru

+0

ich versuche dies, ist encodeParameters ist benutzerdefinierte funktion – Mahen

0

Dies wird getestet-Code dies versuchen:

private void multipartRequestWithVolly() { 
     String urll = "your_url"; 

     progressDialog.show(); 
     StringRequest request = new StringRequest(Request.Method.POST, urll, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       progressDialog.dismiss(); 
       if (!TextUtils.isEmpty(response)) { 
        Log.e(TAG, "onResponse: " + response); 
        textView.setText(response); 
       } else { 
        Log.e(TAG, "Response is null"); 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       progressDialog.dismiss(); 
       Log.e(TAG, "onErrorResponse: " + error.toString()); 
      } 
     }) { 

      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       hashMap = new HashMap<>(); 
       hashMap.put("OPERATIONNAME", "bplan"); 
       hashMap.put("mcode", "298225816992"); 
       hashMap.put("deviceid", "dfb462ac78317846"); 
       hashMap.put("loginip", "192.168.1.101"); 
       hashMap.put("operatorid", "AT"); 
       hashMap.put("circleid", "19"); 
       return hashMap; 
      } 
     }; 
     AppController.getInstance().addToRequestQueue(request); 
    } 
+0

Mit diesem code, es kommt der gleiche fehler wie der Code unten -> ****** com.android. Volley.ServerError ******: {"Nachricht": "Nicht akzeptables Format: json"} – Liru