2016-12-02 10 views
0

実際のリクエストがRetrofitに直面した問題:2.1.0。これは、

{ "アンドロイド& 試験"、 "フォーム": "フィードバック"、 "ログインID": "XYZ123" "フィードバック"}であり、Unicode文字列に変換&と=演算子

しかしレトロフィット

をUnicodeに&オペレータに変換します

{ "フィードバック": "アンドロイド用の\ u0026 テスト"、 "フォーム": "フィードバック"、 "ログインID": "XYZ123"}

は、この問題を解決するために私を助けてください。

public interface APIView { 
@POST(URLS.FEED_BACK) 
Call<FeedbackResponse> saveFeedback(@Body FeedbackRequest request); 
} 

public class WebServices { 
private static WebServices instance = null; 
Gson gson; 
final OkHttpClient okHttpClient; 
Retrofit retrofit; 
APIView service; 

private WebServices() { 
    this.gson = new GsonBuilder().setDateFormat("yyyy-MM-  dd'T'HH:mm:ssZ").create(); 
    this.okHttpClient = new Builder().readTimeout(60, TimeUnit.SECONDS).connectTimeout(60, TimeUnit.SECONDS).build(); 
    this.retrofit = new  Retrofit.Builder().baseUrl(URLS.BASE_URL).addConverterFactory(GsonConverterFacto  ry.create(this.gson)).client(this.okHttpClient).build(); 
    this.service = (APIView) this.retrofit.create(APIView.class); 
    } 

    public static WebServices getInstance() { 
    if (instance == null) { 
     instance = new WebServices(); 
    } 
    return instance; 
    } 

    public APIView getService() { 
    return this.service; 
    } 
} 
+0

私たちがお手伝いできるように、あなたのレトロフィットインターフェイスと任意のインターセプタを貼り付けてください。 – iagreen

+0

こんにちは@iagreenさんは私の問題を見ました – user3295685

答えて

0

あなたgsonインスタンス内のエスケープHTMLを無効にする必要があります。

this.gson = new GsonBuilder().disableHtmlEscaping().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create(); 
0

この

{"feedback":"android &amp; testing","form":"Feedback","loginId":"xyz123"} 
0

などの使用は、私は同じ問題を持っていた、私は、サーバー側の実際の要求にURLエンコード要求を再変換後、URLエンコード形式に要求を変換し、それを解決し、そして:

とサーバ側の

String urlEncoded = ""; 
    try{ 
     urlEncoded = URLEncoder.encode(yourAwesomeRequest); 
    } 
    catch (Exception e){ 
     //OMG 
    } 
は、実際の要求にURLエンコードを変換します。

関連する問題