The problem is what the error message is saying: “the method does not override or implement a method from a supertype”. You annotated both methods with the Override annotation, however, no method with the same signature (i.e. the parameters) can be found in the supertype (JsonHttpResponseHandler
).
If you take a look at the documentation of JsonHttpResponseHandler, you can see all the available onSuccess(...)
and onFailure(...)
methods.
Here is the working version of your code (note that changes in the method signatures):
client.get(QUERY_URL + urlString,
new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, org.apache.http.Header[] headers, JSONObject jsonObject) {
// Display a "Toast" message
// to announce your success
Toast.makeText(getApplicationContext(), "Success!", Toast.LENGTH_LONG).show();
// 8. For now, just log results
Log.d("omg android", jsonObject.toString());
}
@Override
public void onFailure(int statusCode, org.apache.http.Header[] headers, Throwable throwable, JSONObject error) {
// Display a "Toast" message
// to announce the failure
Toast.makeText(getApplicationContext(), "Error: " + statusCode + " " + throwable.getMessage(), Toast.LENGTH_LONG).show();
// Log error message
// to help solve any problems
Log.e("omg android", statusCode + " " + throwable.getMessage());
}
});
Note that starting from Android 6.0 (API level 23) the Apache library (org.apache.http.*) is not available anymore. If you want to continue using that, see Behavior Changes for more information.
Some personal opinion: I wouldn’t recommend using the Asynchronous HTTP Library as it’s built on top of the obsolete (and from API level 23, removed) Apache HttpClient
, which has poor performance compared to HttpURLConnection
. Quote from the Android developers about HttpURLConnection
:
This API is more efficient because it reduces network use through transparent compression and response caching, and minimizes power consumption.