2017-03-13 22 views
-1

私はPlay 2.3 Javaアプリケーションを使用していますが、サーバーにGetリクエストを送信しています。%C5%A0として送信されますがサーバーはWindows-1250文字のみを認識します。私はUTF-8とは異なるものにWSRequestHolderを経由して、クエリparemetersを送信するエンコーディングを設定するにはどうすればよいJava Play Framework、WSRequestHolder、クエリパラメータのエンコーディングを指定する方法は?

wsRequestHolder.setQueryParameter("city", "Plavecký Štvrtok"); 

:この場合は、%の8A(https://www.w3schools.com/tags/ref_urlencode.aspをコード参照)

例を期待しますか?

答えて

1

PlayのWSRequestHandlersのHTTPクエリパラメータのエンコードを暗黙的に定義する方法はありません。

RFC 3986 - Uniform Resource Identifier (URI)は、ASCII文字セットで使用できない文字は、特定の方法でエンコードする必要があることのみを定義しています。 文字列をサーバーでサポートされている適切なエンコーディングに変換する必要があります。 Playはそれをエスケープして、ASCII文字のみで構成される有効なURIにします。

ws.RequestHolder.setQueryParameter("city", new String("Plavecký Štvrtok".getBytes(), "Cp1250") 

supported encodings in Java 8を参照してください。正式名称は次のとおりです。

+0

答えてくれてありがとうしかし、それは働いていないが、パラメータが '市= Plaveckの%のC4の%82%CB%の9D%を20%のC4%のB9%のC2の%A0tvrtok'(特殊文字はUTF-8でエンコードされた) として送られます それは '市= Plaveck%FD%20%8Atvrtok' 私はそれは、Apacheであるように、文字セットを指定することも可能であるとき、それはWSRequestHolderのために有益であろうと思うのHttpClient https://hc.apache.orgする必要があります/httpcomponents-client-4.5.x/httpclient/apidocs/org/apache/http/client/utils/URIBuilder.html 'uriBuilder.setCharset(Charset.forName( "Windowsの-1250"));' へ私は上司に切り替えたこの障害 – Juraj

関連する問題