fix crash when ApiRequest was passed invalid endpoint URL
This commit is contained in:
parent
98cd1762e5
commit
f794e82cc3
@ -87,6 +87,7 @@
|
|||||||
<string name="error_api_disabled">Error: API disabled for this user</string>
|
<string name="error_api_disabled">Error: API disabled for this user</string>
|
||||||
<string name="error_api_unknown">Error: unknown API error (see log)</string>
|
<string name="error_api_unknown">Error: unknown API error (see log)</string>
|
||||||
<string name="error_login_failed">Error: username or password incorrect</string>
|
<string name="error_login_failed">Error: username or password incorrect</string>
|
||||||
|
<string name="error_invalid_api_url">Error: invalid API URL</string>
|
||||||
<string name="combined_mode_summary">Displays articles inline, instead of a separate panel</string>
|
<string name="combined_mode_summary">Displays articles inline, instead of a separate panel</string>
|
||||||
<string name="combined_mode">Combined mode</string>
|
<string name="combined_mode">Combined mode</string>
|
||||||
</resources>
|
</resources>
|
@ -37,7 +37,7 @@ public class ApiRequest extends AsyncTask<HashMap<String,String>, Integer, JsonE
|
|||||||
private final String TAG = this.getClass().getSimpleName();
|
private final String TAG = this.getClass().getSimpleName();
|
||||||
|
|
||||||
public enum ApiError { NO_ERROR, HTTP_UNAUTHORIZED, HTTP_FORBIDDEN, HTTP_NOT_FOUND,
|
public enum ApiError { NO_ERROR, HTTP_UNAUTHORIZED, HTTP_FORBIDDEN, HTTP_NOT_FOUND,
|
||||||
HTTP_SERVER_ERROR, HTTP_OTHER_ERROR, SSL_REJECTED, PARSE_ERROR, IO_ERROR, OTHER_ERROR, API_DISABLED, API_UNKNOWN, LOGIN_FAILED };
|
HTTP_SERVER_ERROR, HTTP_OTHER_ERROR, SSL_REJECTED, PARSE_ERROR, IO_ERROR, OTHER_ERROR, API_DISABLED, API_UNKNOWN, LOGIN_FAILED, INVALID_URL };
|
||||||
|
|
||||||
public static final int API_STATUS_OK = 0;
|
public static final int API_STATUS_OK = 0;
|
||||||
public static final int API_STATUS_ERR = 1;
|
public static final int API_STATUS_ERR = 1;
|
||||||
@ -57,7 +57,7 @@ public class ApiRequest extends AsyncTask<HashMap<String,String>, Integer, JsonE
|
|||||||
|
|
||||||
m_prefs = PreferenceManager.getDefaultSharedPreferences(m_context);
|
m_prefs = PreferenceManager.getDefaultSharedPreferences(m_context);
|
||||||
|
|
||||||
m_api = m_prefs.getString("ttrss_url", null);
|
m_api = m_prefs.getString("ttrss_url", null).trim();
|
||||||
m_trustAny = m_prefs.getBoolean("ssl_trust_any", false);
|
m_trustAny = m_prefs.getBoolean("ssl_trust_any", false);
|
||||||
m_transportDebugging = m_prefs.getBoolean("transport_debugging", false);
|
m_transportDebugging = m_prefs.getBoolean("transport_debugging", false);
|
||||||
m_lastError = ApiError.NO_ERROR;
|
m_lastError = ApiError.NO_ERROR;
|
||||||
@ -92,6 +92,8 @@ public class ApiRequest extends AsyncTask<HashMap<String,String>, Integer, JsonE
|
|||||||
return R.string.error_api_unknown;
|
return R.string.error_api_unknown;
|
||||||
case LOGIN_FAILED:
|
case LOGIN_FAILED:
|
||||||
return R.string.error_login_failed;
|
return R.string.error_login_failed;
|
||||||
|
case INVALID_URL:
|
||||||
|
return R.string.error_invalid_api_url;
|
||||||
default:
|
default:
|
||||||
Log.d(TAG, "getErrorMessage: unknown error code=" + m_lastError);
|
Log.d(TAG, "getErrorMessage: unknown error code=" + m_lastError);
|
||||||
return R.string.error_unknown;
|
return R.string.error_unknown;
|
||||||
@ -121,31 +123,44 @@ public class ApiRequest extends AsyncTask<HashMap<String,String>, Integer, JsonE
|
|||||||
client = new DefaultHttpClient();
|
client = new DefaultHttpClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpPost httpPost = new HttpPost(m_api + "/api/");
|
try {
|
||||||
|
|
||||||
String httpLogin = m_prefs.getString("http_login", "");
|
HttpPost httpPost;
|
||||||
String httpPassword = m_prefs.getString("http_password", "");
|
|
||||||
|
|
||||||
if (httpLogin.length() > 0) {
|
|
||||||
if (m_transportDebugging) Log.d(TAG, "Using HTTP Basic authentication.");
|
|
||||||
|
|
||||||
URL targetUrl;
|
|
||||||
try {
|
try {
|
||||||
targetUrl = new URL(m_api);
|
httpPost = new HttpPost(m_api + "/api/");
|
||||||
} catch (MalformedURLException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
|
m_lastError = ApiError.INVALID_URL;
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
} catch (Exception e) {
|
||||||
|
m_lastError = ApiError.OTHER_ERROR;
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String httpLogin = m_prefs.getString("http_login", "").trim();
|
||||||
|
String httpPassword = m_prefs.getString("http_password", "").trim();
|
||||||
|
|
||||||
HttpHost targetHost = new HttpHost(targetUrl.getHost(), targetUrl.getPort(), targetUrl.getProtocol());
|
if (httpLogin.length() > 0) {
|
||||||
|
if (m_transportDebugging) Log.d(TAG, "Using HTTP Basic authentication.");
|
||||||
client.getCredentialsProvider().setCredentials(
|
|
||||||
new AuthScope(targetHost.getHostName(), targetHost.getPort()),
|
URL targetUrl;
|
||||||
new UsernamePasswordCredentials(httpLogin, httpPassword));
|
try {
|
||||||
}
|
targetUrl = new URL(m_api);
|
||||||
|
} catch (MalformedURLException e) {
|
||||||
|
m_lastError = ApiError.INVALID_URL;
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
HttpHost targetHost = new HttpHost(targetUrl.getHost(), targetUrl.getPort(), targetUrl.getProtocol());
|
||||||
|
|
||||||
|
client.getCredentialsProvider().setCredentials(
|
||||||
|
new AuthScope(targetHost.getHostName(), targetHost.getPort()),
|
||||||
|
new UsernamePasswordCredentials(httpLogin, httpPassword));
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
httpPost.setEntity(new StringEntity(requestStr, "utf-8"));
|
httpPost.setEntity(new StringEntity(requestStr, "utf-8"));
|
||||||
HttpResponse execute = client.execute(httpPost);
|
HttpResponse execute = client.execute(httpPost);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user