2016-03-03 149 views
0

我有一個curl請求,我需要從我的java代碼調用。curl請求到java

curl -XGET 'abc.com:9200/datafinal/map/_search' -d ' 
{ 
    "query": { 
    "filtered": { 
     "query": { 
     "match": { "ORIG_PROVIDER_ID": 1 } 
     }, 
     "filter": { 
     "range": { "TRANSACT_DATE": { "gte": "2015-01-01 00:00:00.0" ,"lte": "2015-01-10 00:00:00.0"}} 
     } 
    } 
    }, 
    "aggs" : { 
     "amount_sum" : { "sum" : { "field" : "TOTAL_AMT" } } 
    } 
} 
' 

這是捲曲請求。我怎麼能從java代碼中調用它?在java中使用httpurlconnection形成這個確切的代碼看起來與請求主體一樣艱難。

+0

您是否試圖在GET請求中發送請求正文?這可能是可能的,但可能是錯誤的。 –

+0

是的,我正在嘗試發送GET請求中的請求正文,這就是彈性搜索的工作原理 –

+0

只需幫助我從這個捲曲中形成一個合適的URL。謝謝。 –

回答

0
import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.net.HttpURLConnection; 
import java.net.URL; 

public class CURLTest { 
    public void main(String[] args) throws IOException { 
     sendData(); 
    } 

public String sendData() throws IOException { 
    // curl_init and url 


    URL url = new URL("Put the Request here"); 
    HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

    // CURLOPT_POST 
    con.setRequestMethod("POST"); 

    // CURLOPT_FOLLOWLOCATION 
    con.setInstanceFollowRedirects(true); 

    String postData = "my_data_for_posting"; 
    con.setRequestProperty("Content-length", 
      String.valueOf(postData.length())); 

    con.setDoOutput(true); 
    con.setDoInput(true); 

    DataOutputStream output = new DataOutputStream(con.getOutputStream()); 
    output.writeBytes(postData); 
    output.close(); 

    // "Post data send ... waiting for reply"); 
    int code = con.getResponseCode(); // 200 = HTTP_OK 
    System.out.println("Response (Code):" + code); 
    System.out.println("Response (Message):" + con.getResponseMessage()); 

    // read the response 
    DataInputStream input = new DataInputStream(con.getInputStream()); 
    int c; 
    StringBuilder resultBuf = new StringBuilder(); 
    while ((c = input.read()) != -1) { 
     resultBuf.append((char) c); 
    } 
    input.close(); 

    return resultBuf.toString(); 
} 
} 

我現在沒有可能測試此代碼,但它應該以這種方式工作。

+0

我沒有檢查HTTPURLConnection,但問題是我無法用請求正文調用確切的URL。請儘可能地發佈解決方案 –

+0

只需幫助我從此捲曲請求中形成正確的網址。 –