2016-03-03 113 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

只需帮助我从此卷曲请求中形成正确的网址。 –