Ниже приведен метод, который я использую для вызова API REST.Он отлично работает с POST (то есть параметром isHttpPOST = true) и возвращает результаты с сервера (который требует базовой аутентификации).
Но при использовании пути кода GET (isHttpPOST = false) аутентификация завершается неудачно, так какесли бы я не предоставил никаких учетных данных вообще.Я не понимаю, почему, поскольку код авторизации применяется к POST и GET.
Что еще нужно сделать для аутентификации по запросу GET?
private static HttpResponse makeHttpApiCall(String url, String json, boolean isHttpPOST, String username, String password)
{
DefaultHttpClient httpClient = new DefaultHttpClient();
UsernamePasswordCredentials creds = new UsernamePasswordCredentials(username, password);
httpClient.getCredentialsProvider().setCredentials(new AuthScope("blah.com", 80), creds);
HttpResponse response;
try {
if ( isHttpPOST )
{
HttpPost httppost = new HttpPost(url);
StringEntity se = new StringEntity(json);
se.setContentEncoding("UTF-8");
httppost.setHeader("Content-Type", "application/json");
httppost.setEntity(se);
response = httpClient.execute(httppost);
}
else
{
HttpGet get = new HttpGet(url);
response = httpClient.execute(get);
}
} catch (ClientProtocolException e) {
Trace.e(TAG, "There was a protocol based error making API call", e);
return null;
} catch (IOException e) {
Trace.e(TAG, "There was an IO Stream related error making API call", e);
return null;
} catch (Exception e) {
Trace.e(TAG, "Failed to get a response from API call (unknown error)", e);
return null;
}
return response;
}