0
0
mirror of https://github.com/mediathekview/zapp.git synced 2024-09-20 04:12:14 +02:00

Fix utf-8 issue for paröamentsfernsehen

This commit is contained in:
Christine Emrich 2016-09-28 17:21:28 +02:00
parent 0fc9d6aba8
commit 56ebcb334c
2 changed files with 98 additions and 2 deletions

View File

@ -0,0 +1,96 @@
package de.christinecoenen.code.programguide.helper;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.toolbox.HttpHeaderParser;
import java.io.UnsupportedEncodingException;
/**
* A canned request for retrieving the response body at a given URL as a String.
* @see "http://stackoverflow.com/a/22694622/3012757"
*/
@SuppressWarnings({"unused", "WeakerAccess", "SameParameterValue", "JavaDoc"})
public class StringRequest extends Request<String> {
private final Response.Listener<String> mListener;
/**
* the parse charset.
*/
private String charset = null;
/**
* Creates a new request with the given method.
*
* @param method the request {@link Method} to use
* @param url URL to fetch the string at
* @param listener Listener to receive the String response
* @param errorListener Error listener, or null to ignore errors
*/
public StringRequest(int method, String url, Response.Listener<String> listener,
Response.ErrorListener errorListener) {
super(method, url, errorListener);
mListener = listener;
}
/**
* Creates a new GET request.
*
* @param url URL to fetch the string at
* @param listener Listener to receive the String response
* @param errorListener Error listener, or null to ignore errors
*/
public StringRequest(String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
this(Method.GET, url, listener, errorListener);
}
/**
* Creates a new GET request with the given Charset.
*
* @param url URL to fetch the string at
* @param listener Listener to receive the String response
* @param errorListener Error listener, or null to ignore errors
*/
public StringRequest(String url, String charset, Response.Listener<String> listener, Response.ErrorListener errorListener) {
this(Method.GET, url, listener, errorListener);
this.charset = charset;
}
@Override
protected void deliverResponse(String response) {
mListener.onResponse(response);
}
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
String parsed;
try {
if(charset != null) {
parsed = new String(response.data, charset);
} else {
parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
}
} catch (UnsupportedEncodingException e) {
parsed = new String(response.data);
}
return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response));
}
/**
* @return the Parse Charset Encoding
*/
public String getCharset() {
return charset;
}
/**
* set the Parse Charset Encoding
* @param charset
*/
public void setCharset(String charset) {
this.charset = charset;
}
}

View File

@ -6,8 +6,8 @@ import android.util.Log;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import de.christinecoenen.code.programguide.helper.StringRequest;
import de.christinecoenen.code.programguide.model.Channel;
import de.christinecoenen.code.programguide.model.Show;
import de.christinecoenen.code.programguide.plugins.BaseProgramGuideDownloader;
@ -31,7 +31,7 @@ public class ParliamentDownloader extends BaseProgramGuideDownloader {
public void download() {
String url = (channel == Channel.PARLAMENTSFERNSEHEN_1) ? XTML_URL_1 : XTML_URL_2;
request = new StringRequest(url, new Response.Listener<String>() {
request = new StringRequest(url, "UTF-8", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "xml loaded: " + response);