2017-03-23 5 views
1

私はアンドロイドアプリでサービスを利用するためにvolleyライブラリを使用しています。奇妙なことに気付きました.jsonオブジェクトをサーバーにポストしようとすると、JSONObject型のリスナーをレスポンスする必要があります。しかし、私のサーバーは文字列、成功または失敗を返します。 Stringレスポンスを待つJsonObjectRequestを記述することは可能ですか?これは私が書いたものです。サービスが正しく実行されますが、onErrorResponseはJSONjsonオブジェクトを投稿し、String Volleyの応答待ち

  JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.POST, url, jsonBody, 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 

         Toast.makeText(StartingActivity.this,response.toString(),Toast.LENGTH_SHORT).show(); 

        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

       error.printStackTrace(); 
       Toast.makeText(StartingActivity.this,"That didn't work",Toast.LENGTH_SHORT).show(); 

      } 
     }); 


     RequestQueue queue = Volley.newRequestQueue(this); 
     queue.add(jsonRequest); 

答えて

0

JsonObjectRequestの代わりにStringRequestを使用します。それは文字列で応答を返しますこのように:

StringRequest stringRequest = new StringRequest(Request.Method.POST,url, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
           Log.e(TAG,response); 
          }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        error.printStackTrace(); 
       } 
      }) { 
     @Override 
     public byte[] getBody() throws AuthFailureError { 
      //use this to post data. 
     } 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      //use this for headers. 
     } 

    }; 

stringRequest.setRetryPolicy(new RetryPolicy() { 
     @Override 
     public int getCurrentTimeout() { 
      return 50000; 
     } 

     @Override 
     public int getCurrentRetryCount() { 
      return 50000; 
     } 

     @Override 
     public void retry(VolleyError error) throws VolleyError { 

     } 
    }); 

    RequestQueue requestQueue = Volley.newRequestQueue(context); 
    requestQueue.add(stringRequest); 
0

jsonBodyあなたはそれが文字列である必要があり、サーバーに送信する文字列を収束することができない原因に成功した後の後にトリガされます。

JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.POST, url, jsonBody.toString(), 

これがあなたに役立つことを願っています。ありがとう!

+0

これは問題ではありません。私はどのように私が得る応答のタイプを変更することができます尋ねる – Libathos

関連する問題