0

Ich habe einen Code, der anscheinend gut funktioniert bis Android 6.0, für die Handhabung von Sonderzeichen wie schwedische Zeichen. Aber das funktioniert nicht gut in Android N 7.0 Version, jede Lösung, auch HTTP.CONTENT_TYPE ist veraltet. Dies ist die zusätzliche Codezeile, die mir geholfen, es bis zu Android 6,0 ​​Sonderzeichen Handhabung in android Volley Android-N-Version

response.headers.put(HTTP.CONTENT_TYPE, response.headers.get("content-type")); 

Ab jetzt bin wie A, A, Ä, ä, ö, ö, als "& # 1234 bin immer Charakter arbeiten zu machen "usw. Art von Wert ist unter der Antwort. Jede Änderung oder aktive antidepricated Codes, wäre hilfreich ,,

 @Override 
protected Response<T> parseNetworkResponse(NetworkResponse response) { 
    try { 
     Response<T> resp = null; 

     //handling special character's and content type based on request type 
     //http may be deprecated, but we are handling it over org.apache library in gradle 
     response.headers.put(HTTP.CONTENT_TYPE, response.headers.get("content-type")); 
     String json = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); 

     Gson gson = new GsonBuilder().create(); 
     switch (mJsonResponseType) { 

      case JSON_OBJECT: 
       resp = Response.success(gson.fromJson(json, mResponseClass), HttpHeaderParser.parseCacheHeaders(response)); 
       break; 

      case JSON_ARRAY: 
       // NOTE: For this to work properly the mResponseClass must be set to an array type, e.g. MyClass[] 
       resp = (Response<T>) Response.success(gson.fromJson(json, mResponseClass), HttpHeaderParser.parseCacheHeaders(response)); 
       break; 

      default: 
       resp = (Response<T>) Response.success(json, HttpHeaderParser.parseCacheHeaders(response)); 
       break; 
     } 
     return resp; 

    } catch (UnsupportedEncodingException e) { 
     return Response.error(new ParseError(e)); 

    } catch (JsonSyntaxException e) { 
     return Response.error(new ParseError(e)); 
    } 
} 
+0

Was bedeutet response.headers.get ("Content-Type") zurückgeben? Und welches ist die erwartete Zeichencodierung? Die Website ist eine. – Juan

+0

"Content-Type" -> "application/json; charset = utf-8", nun, es benötigt das gleiche Format, das kommt, komisch –

+0

versuche String zu ersetzen json = new String (response.data, HttpHeaderParser.parseCharset (response.headers)); mit String json = new String (response.data, "UTF-8")); – Juan

Antwort

0

Offenbar Volley hat eingebaute Art und Weise es die Anfrage Klasse der Handhabung, wo ich so etwas wie: private static final String DEFAULT_PARAMS_ENCODING = "UTF-8" gefunden; So ist die Änderung vorgenommen i Abschnitt mit einem Verfahren specefic, wo HTML-Daten markiert wurde als Antwort kommt :)

public static Spanned fromHtml(String html) { 
      if (NullCheckUtils.isEmpty(html)) { 
       html = ""; 
      } 
      html = (html.replace("&lt;", "<").replace("&gt;", ">")); 
      Spanned result; 
      if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { 
       result = Html.fromHtml(html.trim(), Html.FROM_HTML_MODE_LEGACY); 
      } else { 
       result = Html.fromHtml(html.trim()); 
      } 
      return result; 
     } 

String response=fromHtml("&#1234").toString(); 
Log.d(TAG,response);