2015-11-23 14 views
1

Что работает: Ниже метод с использованием залпа работает для отправки JSON необработанных данныхКак отправить Raw текстовых данных с использованием залп андроида


То, что я пытаюсь сделать: Попытки отправить Необработанные текстовые данные, которые невозможно выполнить. Как достичь этого .... ниже снимок показывает данные Почтальон я пытаюсь отправить

enter image description here


public <T> void MasterWordListCall(Class<T> theClass, Activity context, int position, 
             String mApi, int mGetOrPost, JSONObject stringObjectMap) { 

     //progress = CommonFunctions.showLoadingDialog(progress, ActDrawAreaTwo.this); 

     Map<String, String> params = new HashMap<>(); 
     Map<String, String> headers = new HashMap<String, String>(); 

     headers.put("Content-Type", "application/json"); 

     Iterator it = params.entrySet().iterator(); 
     while (it.hasNext()) { 
      Map.Entry pairs = (Map.Entry) it.next(); 
      Log.d(context.getClass().getCanonicalName(), "params - " + pairs.getKey() + ", " + pairs.getValue()); 
     } 

     String url = AppConstants.SERVER_URL + mApi + "/"; 

     Log.d("FinalUrl:->", url); 

     RequestQueue requestQueue = Volley.newRequestQueue(ActLogin.this); 
     CustomRequest jsObjRequest = new CustomRequest(Request.Method.POST, 
       url, 
       stringObjectMap, 
       params, 
       headers, 
       this.createRequestSuccessListener(), 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         progress.dismiss(); 
        } 
       }); 
     RequestQueueHelper.addToRequestQueue(jsObjRequest, ""); 
     //requestQueue.add(jsObjRequest); 

     //new JSONObject(params) 
    } 



    private Response.Listener<JSONObject> createRequestSuccessListener() { 

     return new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 

       CommonFunctions.dismissLoadingDialog(progress); 
       if(response!=null){ 

        Toast.makeText(ActLogin.this,"Success",Toast.LENGTH_LONG); 

        /*Intent mIntent = new Intent(ActLogin.this,ActSuccess.class); 
        mIntent.putExtra("data", mWord); 
        mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(mIntent); 
        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 
        finish();*/ 

       }else if(response==null){ 

       } 

      } 
     }; 
    } 

CustomRequest.java

public class CustomRequest extends JsonObjectRequest { 

    private Listener<JSONObject> listener; 
    private Map<String, String> params; 
    private Map<String, String> headers; 

    public CustomRequest(int put, String url, 
         JSONObject stringObjectMap, Map<String, String> params, 
         Map<String, String> headers, 
         Response.Listener<JSONObject> reponseListener, 
         ErrorListener errorListener) { 
     //super(put, url, errorListener); 

     super(put, url, (stringObjectMap == null) ? null : stringObjectMap.toString(), reponseListener, 
       errorListener); 
     this.listener = reponseListener; 
     this.params = params; 
     this.headers = headers; 
    } 

    /*public CustomRequest(int method, 
         String url, 
         Map<String, String> params, 
         Map<String, String> headers, 
         Listener<JSONObject> reponseListener, 
         ErrorListener errorListener) { 
     super(method, url, errorListener); 
     this.listener = reponseListener; 
     this.params = params; 
     this.headers = headers; 
    }*/ 

    protected Map<String, String> getParams() 
      throws com.android.volley.AuthFailureError { 
     return params; 
    }; 

    @Override 
    public Map<String, String> getHeaders() throws AuthFailureError { 
     return headers != null ? headers : super.getHeaders(); 
    } 

    @Override 
    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) { 
     try { 
      String jsonString = new String(response.data, 
        HttpHeaderParser.parseCharset(response.headers)); 
      return Response.success(new JSONObject(jsonString), 
        HttpHeaderParser.parseCacheHeaders(response)); 
     } catch (UnsupportedEncodingException e) { 
      return Response.error(new ParseError(e)); 
     } catch (JSONException je) { 
      return Response.error(new ParseError(je)); 
     } 
    } 

    @Override 
    protected void deliverResponse(JSONObject response) { 
     // TODO Auto-generated method stub 
     listener.onResponse(response); 
    } 
} 
+0

Вы пробовали 'StringRequest' в Volley? а также вам нужно установить заголовок как «контент-тип приложения/текст» –

+0

Ответы на все ответы на stackoverflow для этого .... Я не пробовал! ........ Данные, которые, я думаю, должны быть необработанными данными .... не hashmap, я думаю, как params – Devrath

+0

Я уже достиг этого. Если вы не можете найти, то я могу опубликовать свой код здесь :) –

ответ

0

You может отправлять текстовые данные с использованием волейбола String request

public void sendDataString(final VolleyCallback callback, final String appData) { 
      String uri = String.format(Locale.US, URL); 
      StringRequest stringRequest = new StringRequest(Request.Method.POST, uri, 
        new com.android.volley.Response.Listener<String>() { 
         @Override 
         public void onResponse(String response) { 
          Log.d(TAG, "String Success :" + response); 
         } 
        }, 
        new com.android.volley.Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 
          Log.d(TAG, "String Error In Request :" + error.toString()); 

         } 
        }) { 
       @Override 
       protected Response<String> parseNetworkResponse(NetworkResponse response) { 
        String StringResponse = ""; 
        try { 
         StringResponse = new String(response.data, 
           HttpHeaderParser.parseCharset(response.headers)); 
         HttpHeaderParser.parseCharset(response.headers); 
         Log.d(TAG, "Response Headers " + response.headers); 
         Log.d(TAG, "String Status Code " + response.statusCode); 
         Log.d(TAG, "String response data : " + new String(response.data)); 
        } catch (UnsupportedEncodingException e) { 
         return Response.error(new ParseError(e)); 
        } 
        callback.onSuccess(response.data.toString(), response.statusCode); 
        return super.parseNetworkResponse(response); 
       } 

       @Override 
       public byte[] getBody() throws AuthFailureError { 
        return appData.getBytes(); 
       } 

       @Override 
       public Map<String, String> getHeaders() throws AuthFailureError { 
        HashMap<String, String> headers = new HashMap<String, String>(); 
        headers.put("Content-Type", "application/text"); 
        headers.put("charset", TYPE_UTF8_CHARSET); 
        return headers; 
       } 
      }; 
      stringRequest.setRetryPolicy(defaultRetryPolicy); 
//if you are using OkHTTP with Stack. 
      ApplicationController.getInstance().addToRequestQueue(stringRequest, TAG); 
     } 

Где appData - это необработанные данные, которые необходимо отправить на сервер. callBack, который не является обязательным, но необходим, если вы вызываете метод в некоторых других классах и ожидаете ответа, поскольку волейбол является асинхронным.

После того, как API 22 HTTP Client устарел, который используется в Volley; убедитесь, что у вас есть другая альтернатива для решения этих проблем.

0

Попробуйте это.

String url = ""; 
    RequestQueue queue = Volley.newRequestQueue(this); 
    StringRequest request = new StringRequest(Request.Method.GET, url, 
     new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       // Is the responds is success 
      } 
     }, 
     new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       // Is the responds is fail 
      } 
     } 
    ){ 
     @Override 
     protected Map<String, String> getParams() { 
      Map<String,String> map = new HashMap<>(); 
      map.put("grant_type","SET_VALUE"); 
      // Add all parameters here 
      return map; 
     } 
    }; 
    queue.add(request); 
Смежные вопросы