2017-09-12 7 views
1

私は、Webサービスにデータを投稿するためのVolleyライブラリを学習しようとしています。私は今の問題は、これがボレーポストのための私のコードで私は paramsとheaderを持つandroid VolleyライブラリのPOSTリクエストの使い方は?

エラー以下

com.android.volley.ServerError

を取得しています、あるユーザ登録フォームを実装する必要があり、以下のパラメータとヘッダと郵便配達のイメージです... postman screen for post request

方法。

public void postNewComment(){ 
    try { 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     String URL = "http://myurl/api/users"; 
     JSONObject jsonBody = new JSONObject(); 
     jsonBody.put("email", "[email protected]"); 
     jsonBody.put("user_type", "C"); 
     jsonBody.put("company_id", "0"); 
     jsonBody.put("status", "A"); 
     jsonBody.put("password", "123456"); 

     final String requestBody = 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) { 
       error.printStackTrace(); 
       Log.e("VOLLEY", error.toString()); 
      } 
     }) { 
      @Override 
      public String getBodyContentType() { 
       return "application/json; charset=utf-8"; 
      } 

      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       final Map<String, String> headers = new HashMap<>(); 
       headers.put("Authorization", "Basic " + "My_auth_key"); 
       headers.put("Content-Type", "application/json"); 

       return headers; 
      } 

      @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 
       } 
       return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response)); 
      } 
     }; 

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

どこが間違っているのかを教えてください。 URLは2つのヘッダーを設定する必要があることがわかるように、郵便配達員と正しく機能しています。私はまた、AsyncTaskとそのうまくいっているこのUrlのポストメソッドを試してみました。今私はこれを実装する必要があります。親切にお勧めします。ありがとうございました。

これは私のlogcatエラーです:

E/Volley: [81910] BasicNetwork.performRequest: Unexpected response code 405 for "Myurl"

+0

はここにあなたの完全なlogcatのログを投稿してください。 com.android.volley.ServerErrorそれはあなたにも400,500のようなエラー番号を与えるべきです –

+0

あなたは@ SahilManchandaを確認してください。 –

+0

下記を参照してください。パラメータとヘッダーを追加するhttps://www.androidhive.info/2014/05/android-working-with- volley-library-1/ –

答えて

2

**、このいずれかを試してみてください**

private void sendWorkPostRequest() { 

     try { 
      String URL = ""; 
      JSONObject jsonBody = new JSONObject(); 

      jsonBody.put("email", "[email protected]"); 
      jsonBody.put("password", ""); 
      jsonBody.put("user_type", ""); 
      jsonBody.put("company_id", ""); 
      jsonBody.put("status", ""); 

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

        Toast.makeText(getApplicationContext(), "Response: " + response.toString(), Toast.LENGTH_SHORT).show(); 
       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 

        onBackPressed(); 

       } 
      }) { 
       @Override 
       public Map<String, String> getHeaders() throws AuthFailureError { 
        final Map<String, String> headers = new HashMap<>(); 
        headers.put("Authorization", "Basic " + "c2FnYXJAa2FydHBheS5jb206cnMwM2UxQUp5RnQzNkQ5NDBxbjNmUDgzNVE3STAyNzI=");//put your token here 
        return headers; 
       } 
      }; 
      VolleyApplication.getInstance().addToRequestQueue(jsonOblect); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     // Toast.makeText(getApplicationContext(), "done", Toast.LENGTH_LONG).show(); 

    } 
} 
関連する問題