2016-08-08 2 views
0

У меня есть следующие необработанные данные, которые мне нужно отправить на сервер, чтобы получить ответ.Как отправить исходные данные с помощью залпа?

{ 
"nodeId": null, 
"userId": null, 
"mobileNumber": "0000000", 
"emailId": "[email protected]", 
"userProfile": null, 
"region": null, 
"countryCode": "01", 
"password": "[email protected]", 
"places": [], 
"trustedNetwork": [], 
"profilePic": null, 
"fullName": null, 
"longitude": 0.0, 
"latitude": 0.0 } 

При отправке необработанных данных мне также необходимо отправить параметры заголовка аутентификации. Что бы я ни пытался, я не мог опубликовать его.

Я использовал следующий код, который до сих пор не работал

RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
    String URL = baseURL; 

    final String mRequestBody = s; 

    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      Log.i("VOLLEY", response); 
      new AlertDialog.Builder(getActivity()) 
        .setTitle("hmm") 
        .setMessage(""+response) 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 

         } 
        }) 
        .show(); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
     Log.e("VOLLEY", error.getLocalizedMessage()); 
      new AlertDialog.Builder(getActivity()) 
        .setTitle("SORRY") 
        .setMessage(""+error.getLocalizedMessage()) 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 

         } 
        }) 
        .show(); 

     } 
    }) { 
     @Override 
     public String getBodyContentType() { 
      return "application/json; charset=utf-8"; 
     } 
     @Override 
     public byte[] getBody() throws AuthFailureError { 
      try { 
       return mRequestBody == null ? null : mRequestBody.getBytes("utf-8"); 
      } catch (UnsupportedEncodingException uee) { 
       VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", 
        mRequestBody, "utf-8"); 
      return null; 
      } 

     } 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      HashMap<String, String> headers = new HashMap<String, String>(); 
      String creds = String.format("%s:%s", "xxxxxx", "xxxxxxxxxxxxxx"); 
      String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.DEFAULT); 
      headers.put("Authorization", auth); 
      headers.put("Content-Type", "application/json; charset=utf-8"); 
      return headers; 
     } 


    }; 

    requestQueue.add(stringRequest); 
+0

'mRequestBody'. Теперь вы показываете, что он содержит. 'S'? – greenapps

+0

'который еще не работал' ?? Вы должны точно рассказать, что происходит, а что нет. – greenapps

+0

@greenapps mRequestBody содержит сырой json в форме строки, я получаю исключение volll для «null» каждый раз, когда я запускаю этот код – mrnobody

ответ

0

Здесь проблема была на самом деле произошло во время создания авторизации, который воспитывался дело залп исключение. Поскольку пароль, который я использовал, был очень длинным. Base64.default не обрабатывал его должным образом. После изменения на Base64.no_wrap проблема была решена

Смежные вопросы