2017-09-11 12 views
0

POSTコマンドを実行したいと思います。複数のクエリパラメータを使用したPOSTの更新

これは私のエンドポイントである:

@POST("WSCoreAPI/send/receive/tester") 
Call<LoginResponse> tester(
     @QueryMap Map<String, String> data); 

が、それは

に動作していない: http://180.150.134.136:18095/WSCoreAPI/send/receive/tester?method=LOGN&data=(urlencodeddata)

私の質問は、私はこのような何かをしたどのように私は私の改造で

をエンドポイントを構築しますです

と同様に、

@POST("WSCoreAPI/send/receive/tester") 
Call<LoginResponse> tester(
     @Query("method") String method, 
     @Query("data") String data); 
+0

エラーが生じますか? –

+0

エラーは私のAPIから来ます。私はAPIに送信された実際のURL要求をどのように記録するのか分かりません。だから私のレトロフィットのエンドポイントを構築することに問題があるようです – fvthree

+0

それをより明確に理解するためにアンドロイドのlogcatを置くことができます –

答えて

1

使用@FieldとURLエンコードされたフィールドのため@FormUrlEncoded

@FormUrlEncoded 
@POST("WSCoreAPI/send/receive/tester") 
Call<LoginResponse> tester(@Field("method") String method, 
          @Field("data") String data); 
+0

まだ運がない。私はまだ私のapiから同じエラーを取得しています – fvthree

+0

@fvthreeあなたはPostmanまたは他のクライアントと同じを試しましたか?あなたのサンプルは '&data =(urlencodeddata)'と言っていますが、あなたはPOSTメソッドを使っていますが、渡すデータはクエリの一部です。 '@ Field'や' @ FieldMap'を使うと、retrofitはそれを投稿ではなくクエリに追加します。そしてあなたのサーバーは投稿の本文を受け入れるべきです。 – Milan

+0

私はPostmanを使ってみました。サーバーは投稿本体を受け入れるべきではありません。要求を行う際には、URLに「メソッド」と「データ」を含める必要があります。私は質問が必要です – fvthree

1

ので、私はそれが働いてしまった。この

@FormUrlEncoded 
@POST("WSCoreAPI/send/receive/tester") 
Call<LoginResponse> tester(@FieldMap Map<String, String> parameters); 
0

オーケーを試してみてください。

上記の2つのソリューションのいずれかを使用しました。改造は自動的@Field

で注釈を付けフィールドをエンコードするので、URLエンコードを削除

@FormUrlEncoded 
@POST("WSCoreAPI/send/receive/tester") 
Call<LoginResponse> tester(@Field("method") String method, 
          @Field("data") String data); 

は、問題を修正します。私は、「データ」クエリのparamsのURLエンコードを取り出して、これを使用してなかった何

関連する問題