2017-07-27 9 views
0

私はVolleyを使ってPostメソッドを試していました。私はcom.android.google.volley server error. 私は郵便配達員で私のapiをテストし、それは動作します。通常、私はhttp://myurl/api/values/Post?film=...&email=ように私のAPIを使用しVolley PostメソッドMultiParams Error

 StringRequest request=new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        Log.d("Response", response); 

       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.e("Error :",error.getMessage()); 
       } 
      }) { 
       @Override 
       public Map<String, String> getParams() { 
        Map<String, String> params = new HashMap<String, String>(); 


        params.put("name", film.toString()); 
        params.put("email", spin.toString()); 
        params.put("password", spin_iki.toString()); 
        params.put("address", spin_uc.toString()); 
        params.put("brand", name.toString()); 

        return params; 

       } 
      }; 

      RequestQueue queue= Volley.newRequestQueue(film.this); 
      queue.add(request); 
     } 
    }); 

... はどのように私はこの問題を解決することができます:ここに は私のコードですか? you.This私のAPIのPostメソッドのコード

[HttpPost] 
    public int Post_film(string name, string email, string password, string address, string brand) 
    { 
     using (var context = new Entities()) 
     { 


      db_table nesne = new db_table(); 
      nesne.name =name; 
      nesne.email = email; 
      nesne.password = password; 
      nesne.address = address; 
      nesne.brand = brand; 
      context.db_table.Add(nesne); 


      int i = context.SaveChanges(); 
      return i; 

     } 
    } 

ありがとうございました。この私のポストマンSS enter image description here

+0

サーバがPOSTリクエストを期待している場合、 "?film = something&email = something"のようなパラメータを送信するのはなぜですか? POSTではなく、GET要求を行うときにURLを介してパラメータを送信します。 – FerDensetsu

+0

私のサーバーはPost要求を期待していましたが、私はparamsを使って郵便配達員でテストしました。私は郵便配達員を置くことができますし、私は私のapiのポストのメソッドコードを置くことができる場合は、 – omer1596

+0

はい、あなたのバレーコードがOKであるので、問題を解決するために役立つでしょう。 – FerDensetsu

答えて

0

OK、あなたはPOSTリクエストを送信するが、それでもURLを経由してパラメータを追加しています。サーバーがURLからこれらのパラメーターを取得している場合、getParams()のオーバーライドはURLに付加されたパラメーターではなく、要求本体内のパラメーターに対してのみ機能するため、Volley要求は機能しません。サーバーがパラメータを受け取る方法を変更するか、Androidコードで「http :: //myUrl.com/?email = something & name = something」のようなすべてのパラメータを添付した文字列URLを生成するか、 。私にとっては、最も論理的な選択肢は、URLにパラメータを含むPOST要求を期待するのはあまり意味がないため、サーバー側のコードを変更することです。 POSTリクエストのパラメータはリクエスト本体の内側にある必要があります

+0

を見ることができます。私のAPIコードを変更して[FromBody]を追加して公開しましたが、stilはまだ動作していません。同じエラーが発生しましたcom.android.google.volley ServerError :(and [FromBody ]が動作しています – omer1596

+0

私は問題を解決しましたが、[FromBody]は動作しませんでしたので、[FromBody]の代わりに[FromUri]を変更しました。コードが動作しています。 – omer1596

関連する問題