Spring Basic OAuth выдает неправильное исключение запроса

Привет, я пытаюсь подключиться к эластичному поиску, используя Spring resttemplate, но это дает исключение, говорящее о неправильном запросе. ниже мой код

 String plainCreds = "elasticsearch:*****";
            byte[] plainCredsBytes = plainCreds.getBytes();
            byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
            String base64Creds = new String(base64CredsBytes);

            HttpHeaders headers = new HttpHeaders();
            headers.set("Authorization", "Basic " + base64Creds);

            final String url = "https://ff92ba95318093026b7a06180f2b2d19.us-east-1.aws.found.io:9243/jinkjobposts_dev_v1/jobPosts";

            RestTemplate restTemplate = new RestTemplate();
            restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

            HttpEntity<String> request = new HttpEntity<>( headers);
            Log.d("location", "before exchange");
            ResponseEntity<JobPosts> response = restTemplate.exchange(url, HttpMethod.POST, request, JobPosts.class);

            JobPosts jobPosts = response.getBody();

            Log.d("location", "after exchange");
            list = Arrays.asList(jobPosts);

это дает это исключение.

FATAL EXCEPTION: AsyncTask #2
 Process: in.thoughtsmith.jink, PID: 8902
 java.lang.RuntimeException: An error occured while executing doInBackground()
 at android.os.AsyncTask$3.done(AsyncTask.java:304)
 at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
 at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
 at java.util.concurrent.FutureTask.run(FutureTask.java:242)
 at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1115)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:590)
 at java.lang.Thread.run(Thread.java:818)
 Caused by: org.springframework.web.client.HttpClientErrorException: 400 Bad Request
 at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:76)
 at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:524)
 at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:481)
 at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:439)
 at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:415)
 at in.thoughtsmith.jink.MapsActivity$SearchJob.doInBackground(MapsActivity.java:690)
 at in.thoughtsmith.jink.MapsActivity$SearchJob.doInBackground(MapsActivity.java:645)
 at android.os.AsyncTask$2.call(AsyncTask.java:292)
 at java.util.concurrent.FutureTask.run(FutureTask.java:237)
 at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1115) 
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:590) 
 at java.lang.Thread.run(Thread.java:818) 

Пожалуйста, я делаю это в первый раз


person FaisalAhmed    schedule 15.02.2017    source источник
comment
Я думаю, вам просто не хватает /_search в конце вашего URL.   -  person Val    schedule 15.02.2017
comment
да, спасибо, я пропустил /_search. Не могли бы вы помочь мне в этом stackoverflow.com/questions/42240927/   -  person FaisalAhmed    schedule 15.02.2017


Ответы (1)


Это не проблема авторизации. В вашем url просто отсутствует конечная точка _search в конце, поэтому вы получаете ошибку HTTP 400.

 final String url = "https://ff92ba95318093026b7a06180f2b2d19.us-east-1.aws.found.io:9243/jinkjobposts_dev_v1/jobPosts/_search";
person Val    schedule 15.02.2017
comment
спасибо Вал. Я пытаюсь подключиться к эластичному поиску, используя шаблон Spring Rest здесь stackoverflow.com/questions/42240927/, но это не дает мне ни результата, ни исключения - person FaisalAhmed; 15.02.2017