Add feed: remember credentials after selecting feed, try UTF-8 for HTTP basic authentication
This commit is contained in:
parent
07ce9579fb
commit
a34acb71d1
|
@ -376,7 +376,12 @@ public abstract class OnlineFeedViewActivity extends ActionBarActivity {
|
||||||
String selectedUrl = urls.get(which);
|
String selectedUrl = urls.get(which);
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
resetIntent(selectedUrl, titles.get(which));
|
resetIntent(selectedUrl, titles.get(which));
|
||||||
startFeedDownload(selectedUrl, null, null);
|
FeedPreferences prefs = feed.getPreferences();
|
||||||
|
if(prefs != null) {
|
||||||
|
startFeedDownload(selectedUrl, prefs.getUsername(), prefs.getPassword());
|
||||||
|
} else {
|
||||||
|
startFeedDownload(selectedUrl, null, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -81,11 +81,12 @@ public class HttpDownloader extends Downloader {
|
||||||
if (userInfo != null) {
|
if (userInfo != null) {
|
||||||
String[] parts = userInfo.split(":");
|
String[] parts = userInfo.split(":");
|
||||||
if (parts.length == 2) {
|
if (parts.length == 2) {
|
||||||
String credentials = Credentials.basic(parts[0], parts[1]);
|
String credentials = encodeCredentials(parts[0], parts[1], "ISO-8859-1");
|
||||||
httpReq.header("Authorization", credentials);
|
httpReq.header("Authorization", credentials);
|
||||||
}
|
}
|
||||||
} else if (!StringUtils.isEmpty(request.getUsername()) && request.getPassword() != null) {
|
} else if (!StringUtils.isEmpty(request.getUsername()) && request.getPassword() != null) {
|
||||||
String credentials = Credentials.basic(request.getUsername(), request.getPassword());
|
String credentials = encodeCredentials(request.getUsername(), request.getPassword(),
|
||||||
|
"ISO-8859-1");
|
||||||
httpReq.header("Authorization", credentials);
|
httpReq.header("Authorization", credentials);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,6 +105,24 @@ public class HttpDownloader extends Downloader {
|
||||||
|
|
||||||
Log.d(TAG, "Response code is " + response.code());
|
Log.d(TAG, "Response code is " + response.code());
|
||||||
|
|
||||||
|
if(!response.isSuccessful() && response.code() == HttpURLConnection.HTTP_UNAUTHORIZED) {
|
||||||
|
Log.d(TAG, "Authorization failed, re-trying with UTF-8 encoding");
|
||||||
|
if (userInfo != null) {
|
||||||
|
String[] parts = userInfo.split(":");
|
||||||
|
if (parts.length == 2) {
|
||||||
|
String credentials = encodeCredentials(parts[0], parts[1], "UTF-8");
|
||||||
|
httpReq.header("Authorization", credentials);
|
||||||
|
}
|
||||||
|
} else if (!StringUtils.isEmpty(request.getUsername()) && request.getPassword() != null) {
|
||||||
|
String credentials = encodeCredentials(request.getUsername(), request.getPassword(),
|
||||||
|
"UTF-8");
|
||||||
|
httpReq.header("Authorization", credentials);
|
||||||
|
}
|
||||||
|
response = httpClient.newCall(httpReq.build()).execute();
|
||||||
|
responseBody = response.body();
|
||||||
|
contentEncodingHeader = response.header("Content-Encoding");
|
||||||
|
isGzip = StringUtils.equalsIgnoreCase(contentEncodingHeader, "gzip");
|
||||||
|
}
|
||||||
|
|
||||||
if(!response.isSuccessful() && response.code() == HttpURLConnection.HTTP_NOT_MODIFIED) {
|
if(!response.isSuccessful() && response.code() == HttpURLConnection.HTTP_NOT_MODIFIED) {
|
||||||
Log.d(TAG, "Feed '" + request.getSource() + "' not modified since last update, Download canceled");
|
Log.d(TAG, "Feed '" + request.getSource() + "' not modified since last update, Download canceled");
|
||||||
|
@ -253,4 +272,15 @@ public class HttpDownloader extends Downloader {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String encodeCredentials(String username, String password, String charset) {
|
||||||
|
try {
|
||||||
|
String credentials = username + ":" + password;
|
||||||
|
byte[] bytes = credentials.getBytes(charset);
|
||||||
|
String encoded = ByteString.of(bytes).base64();
|
||||||
|
return "Basic " + encoded;
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue