2016-03-21 11 views
0

私はアラモファを迅速に使用して、httpリクエスト/ポストをサーバーに送信しています。以下は私が迅速に使用したコードです。以下はすぐにAlamofireを使用してポストパラメータを設定する方法

Alamofire.request(.POST, "http://localhost:8080/hello", headers: [ACCESS_TOKEN:token, "Content-Type":"application/x-www-form-urlencoded" ], 
      parameters:["friend_id" : friendId, "skill_id" : skillId]).response(completionHandler: { 
       (request, response, data, error) in 
       print(request) 
       print(response) 
       print(data) 
       print(error) 
      }) 

サーバー側で定義されたコードです:私は、迅速なコードを実行すると

@POST 
@Path("/hello") 
@Produces(MediaType.APPLICATION_JSON) 
public Response nominateSkill(@Context HttpServletRequest request, @FormParam("friend_id") long friendId, @FormParam("skill_id") int skillId) { 
    // ... 
} 

、私はいつも、サーバー側のエラーメッセージの下になった:

A servlet request to the URI http://localhost:8080/hello contains form parameters in the request body but the request body has been consumed by the servlet or a servlet filter accessing the request parameters. Only resource methods using @FormParam will work as expected. Resource methods consuming the request body by other means will not work as expected. 

私は思いますパラメータを正しく設定しなかった迅速なコードによって問題が解決されます。しかし、私はそれらを正しく設定する方法を知らないのですか?

答えて

1

検索の結果、解決策が見つかりました。次のようなリクエストメソッドに「encoding:.URL」を追加する必要があります。

Alamofire.request(.POST, "http://localhost:8080/hello", headers: [ACCESS_TOKEN:token, "Content-Type":"application/x-www-form-urlencoded" ], 
     parameters:["friend_id" : friendId, "skill_id" : skillId], 
     encoding: .URL).response(completionHandler: { 
      (request, response, data, error) in 
      print(request) 
      print(response) 
      print(data) 
      print(error) 
     })