2017-07-21 75 views
-1

這給我錯誤,因爲它只期望JSON對象作爲參數。有沒有辦法在POST請求中傳遞字符串?我需要傳遞一個加密的字符串。如何通過volley jsonObjectRequest post mehod傳遞一個字符串?

public JsonObjectRequest addContact(String url, final String contactString, final AddContactCallback addContactCallback) { 

    final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, contactString, new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 
         try { 
          if (response.length() > 0 && response.getString("status").equalsIgnoreCase("1")) { 
           if (response.getString("message").equalsIgnoreCase("success")) {// registration 

            addContactCallback.onAddContactRequestSuccess(....); 

           } 
          }else { 
           addContactCallback.onAddContactRequestError(new VolleyError()); 
          } 
         } catch (JSONException e) { 
          e.printStackTrace(); 
          addContactCallback.onAddContactRequestError(new VolleyError()); 
         } 
        } 
       }, new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         if (error instanceof NetworkError || error instanceof NoConnectionError) { 
          addContactCallback.onNetworkError(); 
         } else { 
          addContactCallback.onAddContactRequestError(error); 
         } 
        } 
       }); 
       jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(
         10000, 
         DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
         DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
       return jsonObjectRequest; 
      } 
+0

有你的地方contactJSON的嘗試這種新的JSONObject(contactJSON)? –

+0

ya.it不起作用。 – ben10

回答

0

我得到了solution.override getBody方法並傳遞字符串作爲byteArray.in的JsonObjectRequest構造通空到位的JSONObject的

{ 
      @Override 
      public byte[] getBody() { 

       byte[] body = new byte[0]; 
       try { 
        body = contactString.getBytes("UTF-8"); 
       } catch (UnsupportedEncodingException e) { 

       } 
       return body; 
      } 
     }; 
1

我假設ü要在POST請求的身體傳遞一個參數有您的情況

final JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, contactString, new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        try { 
         if (response.length() > 0 && response.getString("status").equalsIgnoreCase("1")) { 
          if (response.getString("message").equalsIgnoreCase("success")) {// registration 

           addContactCallback.onAddContactRequestSuccess(....); 

          } 
         }else { 
          addContactCallback.onAddContactRequestError(new VolleyError()); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
         addContactCallback.onAddContactRequestError(new VolleyError()); 
        } 
       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        if (error instanceof NetworkError || error instanceof NoConnectionError) { 
         addContactCallback.onNetworkError(); 
        } else { 
         addContactCallback.onAddContactRequestError(error); 
        } 
       } 
      }){ 
       @Override 
       protected Map<String,String> getParams(){ 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("stringKey", YOUR_ACTUAL_STRING); 
       return params; 
    }; 
      jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(
        10000, 
        DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
      return jsonObjectRequest; 
     } 
+0

如果我只需要傳遞一個字符串,而不是像鍵值對那樣有一種方式? – ben10

+0

@ ben10 AFAIK'NO' –

+0

你能給我發送url和那個字符串,以及如何測試它的工作與否 – Avinash

0

在凌空

@Override 
     protected Map<String,String> getParams(){ 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("stringKey", YOUR_ACTUAL_STRING); 

      return params; 
     } 

這種方法,如果您要發送的字符串到服務器通過jsonObjectRequest post方法,所以你需要使密鑰和值對通過服務器發送

like:

JSonObject jsonobjest=new JSonObject(); 
jsonObject.put(Key_name,String_value); 

並使用與此處相同的jsonObjectRequest在服務器上發送此jsonobject。 其工作我,你可以使用它。

相關問題