2016-09-13 5 views
1

Я работаю над проглатыванием и запросом данных на сервере друидов. Но, когда я запрашиваю я только с помощью командной строки, как показано ниже:Клиент Java с Apache HttpClient для подключения к друиду

curl -X 'POST' -H 'Content-Type:application/json' -d @quickstart/ingest_statistic_hourly_generate.json localhost:8090/druid/indexer/v1/task 

Может кто-нибудь сказать мне путь использования Java-клиента с Apache HttpClient отправить этот запрос на сервер друидов так, чтобы получить ответ. Спасибо.

ответ

2

Я не проверял это, но это должно дать вам четкое представление о том, делать это

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.nio.file.Files; 
import java.nio.file.Paths; 

import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.entity.StringEntity; 
import org.apache.http.impl.client.HttpClientBuilder; 

public class HTTPTestClient { 

    public static void main(String[] args) throws Exception { 
     String url = "http://localhost:8090/druid/indexer/v1/task"; 
     String content = new String(Files.readAllBytes(Paths.get("quickstart/ingest_statistic_hourly_generate.json"))); 

     HttpClient client = HttpClientBuilder.create().build(); 

     HttpPost post = new HttpPost(url); 

     post.addHeader("Accept", "application/json"); 
     post.addHeader("charset", "UTF-8"); 
     post.addHeader("Content-Type", "application/json"); 
     post.setEntity(new StringEntity(content)); 

     HttpResponse response = client.execute(post); 
     System.out.println(response.getStatusLine()); 
     System.out.println("Response Code : " + response); 

     BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

     StringBuffer result = new StringBuffer(); 
     String line = ""; 
     while ((line = rd.readLine()) != null) { 
      result.append(line); 
     } 
     System.out.println(result); 

    } 
} 
+0

Я запустить свой код, приведенный выше, но есть ошибка: исключение в потоке «основного» java.lang. NoSuchFieldError: INSTANCE по адресу org.apache.http.conn.ssl.SSLConnectionSocketFactory. (SSLConnectionSocketFactory.java:144) на org.apache.http.impl.client.HttpClientBuilder.build (HttpClientBuilder.java:955) в Java линии HttpClient клиент = HttpClientBuilder.create() построить(). – VanThaoNguyen

+0

Я использовал последние библиотеки Apache HTTP Client. Для вашей ошибки см. Https://stackoverflow.com/questions/22330848/httpclient-example-exception-in-thread-main-java-lang-nosuchfielderror-inst –

+0

Используете ли вы Httpclient или оба Httpclient и Httpcore? Я просто использовал Httpclient – VanThaoNguyen

 Смежные вопросы

  • Нет связанных вопросов^_^