2016-11-08 29 views
0

onResponseでログインするための文字列ポストリクエストでは、ステータスコード200が返されます。返されたデータも取得したいと思います。私はこの時点からどこへ行くべきかわからないのですか?ステータスコードだけでなく、データを取得する方法に関するアイデアはありますか?Android Volley onResponseデータを取得

public void requestWithSomeHttpHeaders() { 

    try { 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     String URL = "http://......"; 
     JSONObject jsonBody = new JSONObject(); 
     jsonBody.put("username", "yourusername"); 
     jsonBody.put("password", "yourpassword"); 
     final String mRequestBody = 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 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 
      protected Response<String> parseNetworkResponse(NetworkResponse response) { 
       String responseString = ""; 
       if (response != null) { 
        responseString = String.valueOf(response.statusCode); 
        // can get more details such as response.headers 
        System.out.println(responseString); 
       } 
       return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response)); 
      } 
     }; 

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

ではこの

public Profile getUserProfile(String response){ Profile profile = null; try { profile = new Profile(); JSONObject jsonObject = new JSONObject(response); profile.setId(jsonObject.getInt(context.getString(R.string.profile_id))); profile.setLastName(jsonObject.getString(context.getString(R.string.profile_lastName))); profile.setName(jsonObject.getString(context.getString(R.string.profile_name))); profile.setEmail(jsonObject.getString(context.getString(R.string.profile_email))); } catch (JSONException | NullPointerException e) { e.printStackTrace(); return null; } return profile; } 

のようなメソッドを追加解析したい場合は? –

答えて

1

好ましくは、メソッドを定義します。

private void doLogin() { 
    // TODO: startActivity? 
} 

その後、サーバーからのデータが必要な場合、それはString responseが何であるかである

StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      Log.i("VOLLEY", response); 

      doLogin(); 
     } 

ことを呼び出します。 Logcatを確認してください。

getBodyを実装せずにStringRequestを使用して、コメントで述べたように、parseNetworkResponse、およびgetBodyContentTypeは、より良い仕事かもしれません。

+0

私が見ているlogcatはすべてI/VOLLEY:200 – SoundCheese

+0

私はGoogle Postmanで何か似たようなことをすれば、私はあらゆる種類のデータを返す。 – SoundCheese

+0

あなたのURLは何か分かりませんが、単に "200" 'を返すようです。それが問題なのであれば、それはバレーの問題ではなくサーバ側である –

1

あなたは本当に `onResponse`と` onError`以上を実装する必要があったJSONは、あなたのonResponse方法

 @Override 
     public void onResponse(String response) { 
      //If you have son object 
      Profile profile = getUserProfile(response) 
     } 
関連する問題