2017-02-15 37 views
0

您好我正尝试使用Spring resttemplate进行弹性搜索连接,但它给出异常说不好的请求。下面是我的代码弹簧基本OAuth投掷不良请求异常

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)  

请我,我是第一次

+1

我想你只是在URL末尾缺少一个'/ _search'。 – Val

+0

是的,谢谢我错过了/ _search。你能帮我在这个http://stackoverflow.com/questions/42240927/how-to-search-via-json-in-elastic-search-using-spring-resttemplate-in-android/42247492#42247492 – FaisalAhmed

回答

1

这不是一个授权问题这样做。您的url结尾处仅丢失_search端点,因此您收到错误的HTTP 400。

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

谢谢瓦尔。我想连接到弹性搜索使用弹簧休息模板在这里http://stackoverflow.com/questions/42240927/how-to-search-via-json-in-elastic-search-using-spring-resttemplate-in-但它没有给我结果或例外 – FaisalAhmed