1

playframework 2 で REST Web サービスを呼び出す必要があり、配列であるクエリ パラメータを送信する必要があります。通常のhtmlでは、次のように送信します。

GET http://host.com?a=1&a=2&a=3

しかし、playframework 2 WS api を使用して実行しようとすると、次のようになります。

Map<String,String[]> paramMap = new HashMap<String, String[]>();
paramMap.put("a",new String[]{"value1","value2"});

WS.WSRequestHolder holder = WS.url("http://host.com");

Set<String> keys = paramMap.keySet();
for (int i = 0; i < paramMap.get(key).length; i++)
{
    holder.setQueryParameter(key, paramMap.get(key)[i]);
}

setQueryParamater()が最初に到着したときはすべて完璧に動作しますが、2 回目にはNullPointerExceptionが発生し、paramMap.get(key)[i]が null ではありません。これは可能ですか?回避策はありますか?

前もって感謝します!

4

2 に答える 2

0

通常のHTMLでは、次のように送信する必要があります。

GET http://host.com?a=1&a=2&a=3

カンマ(、)の代わりにアンペアハンド(&)を使用してクエリ文字列のパラメータを区切る

編集:申し訳ありませんが、入力するのを忘れました:ループ内で実行しようとしているように、同じ名前のフィールドを使用しないでください。次のように変更する必要があります。

http://host.com?a1=value1&a2=value2

これがあなたが直面するNullPointerExceptionを引き起こすかどうかはわかりません。しかし、そうでない場合でも、フィールドごとに1つの値(キー、値)を保持するように実装を変更することをお勧めします

于 2013-01-30T11:04:59.320 に答える
0

わかりました、それはプレイフレームワークのバグのようですが、2.1バージョンで解決されました。

https://play.lighthouseapp.com/projects/82401/tickets/360-bug-in-wsjava-setqueryparameter-leads-to-npe-when-adding-a-query-parameter-twice

于 2013-02-04T20:41:22.567 に答える