2016-10-11 23 views
0

一重引用符文字を含むURLを使用してAPIにリクエストを送信したいとします。 retrofit2を使用しています。HTTP URLの一重引用符をエンコードするためにRetrofitを使用しないでください。

私はこのURLがAPIに到達したい:?http://someapp.somecompany.com/api/contents/inc() $フィルタ= _id%20eq%20'57fb60534421dd35544b27a9'

私は、符号化(=真のエンコード)で@queryと@QueryMap注釈を試してみましたが、また、( = false)のプロパティが、私の試行のどれもうまくいきませんでした。

MyClientという(インタフェース)

@PUT("api/contents/inc()") 
Call<Object> addLike(@QueryMap(encoded =true) Map<String,String> options); 

MainActivity(活動)

Map<String,String> likeMap = new HashMap<>(); 
likeMap.put("$filter","_Id%20eq%20'57fb60534421dd35544b27a9'"); 
Call<Object> addLikeCall = myClient.addLike(likeMap); 
addLikeCall.enqueue(new Callback<Object>() {.....}); 

このコードは、私にこの出力を与える:

- > 0をPUT$フィルタ= _id%20eq%20%2757fb60534421dd35544b27a9%27 HTTP/1.1(0バイト本体)

< - ??500内部サーバーエラーhttp://someapp.somecompany.com/api/contents/inc() $フィルタ= _id%20eq%20%2757fb60534421dd35544b27a9%27(132ms 、36バイトのボディ)

URLに一重引用符をエンコードするための改造を避けるにはどうすればよいですか?

ありがとうございました。

答えて

1

あなたのURLの'文字を%27に置き換えることができます。

その他のASCIIエンコーディングは、このリンクにあります。

http://www.w3schools.com/TAGS/ref_urlencode.asp

+0

私はちょうどあなたの提案の反対をしたいです。改造して私のキャラクターを '%27'に置き換えたくないのです。インターセプタクラスで '%27'部分文字列を' ''文字に置き換えようとしましたが、私が望む結果を得ることができませんでした。 – user2949556

+0

サーバーサイドで別のキャラクターに変更し、サーバー側でそれを逆転させるという規則を持っていない限り、これを行うことはできません。自動的に変更されることなく、あなたのURLにこれらの文字を持つことはできません。あなたのURLにこれらの文字を持つことができないそのWebプロトコル –

+0

私は、内部サービスのエラーは、Webサービスプロバイダによってサーバー側で自動的に逆転されるため、その単一引用のためではないと考えています –

関連する問題