curl命令java_从Java调用curl命令
curl -k -XPOST 'https://localhost:9200/myweb/myrep/**input_string**/_update' -d '{"doc":{"status":"Disconnected"}}'
在上面調(diào)用以獲取XML文件中的input_string列表
選項1:
編寫一個bash腳本以完成上述任務(wù),然后從Java代碼中調(diào)用此腳本
選項2:
RunTime.exec()在for循環(huán)中調(diào)用curl命令
像這樣:curl command in java
還有其他更好的方法嗎?
這將是我執(zhí)行各種其他事情的整個Java程序中的重要步驟之一.這就是我在尋找將其與Java代碼很好地集成的方法的原因,而不是提供作為單獨的CLI腳本在上面運行的選項.
解決方法:
這是通過HTTPURLConnection進行POST和GET的實現(xiàn).
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
public class PostGET {
public static void main(String[] args) throws UnsupportedEncodingException {
Map headerMap = new HashMap();
String bodyStr = "{\"doc\":{\"status\":\"Disconnected\"}}";
InputStream body = new ByteArrayInputStream(bodyStr.getBytes("UTF-8"));
System.out.println("Sending POST");
post("http://127.0.0.1:3000", headerMap, body);
System.out.println("");
System.out.println("Sending GET");
get("http://127.0.0.1:3000?test=hello", headerMap);
}
public static void post(String targetUrl, Map headerMap,
InputStream body) {
HttpURLConnection http = null;
try {
http = (HttpURLConnection) new URL(targetUrl).openConnection();
http.setRequestMethod("POST");
http.setDoOutput(true);
for (Map.Entry header : headerMap.entrySet()) {
http.setRequestProperty(header.getKey(), header.getValue());
}
OutputStream out = http.getOutputStream();
out.write(readInput(body));
out.close();
InputStream in = http.getInputStream();
String response = new String(readInput(in), "UTF-8");
System.out.println("Response code: " + http.getResponseCode());
System.out.println("Response headers : " + http.getHeaderFields());
System.out.println("response from server: " + response);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void get(String targetUrl, Map headerMap) {
HttpURLConnection http = null;
try {
http = (HttpURLConnection) new URL(targetUrl).openConnection();
http.setRequestMethod("GET");
for (Map.Entry header : headerMap.entrySet()) {
http.setRequestProperty(header.getKey(), header.getValue());
}
InputStream in = http.getInputStream();
String response = new String(readInput(in), "UTF-8");
System.out.println("Response code: " + http.getResponseCode());
System.out.println("Response headers : " + http.getHeaderFields());
System.out.println("response from server: " + response);
} catch (IOException e) {
e.printStackTrace();
}
}
public static byte[] readInput(InputStream in) {
ByteArrayOutputStream bais = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int readLen = -1;
try {
while ((readLen = in.read(buffer)) != -1) {
bais.write(buffer, 0, readLen);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return bais.toByteArray();
}
}
下面是一個Nodejs服務(wù)器,可以通過以下方式對此進行測試
http = require('http');
server = http.createServer( function(req, res) {
if (req.method == 'POST') {
console.log("POST");
var body = '';
req.on('data', function (data) {
body += data;
console.log("Partial body: " + body);
});
req.on('end', function () {
console.log("Body: " + body);
});
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('post received');
} else if(req.method === 'GET') {
console.log("GET");
var params = req.url.split('?');
params = params.length > 1 ? params[1] : "";
console.log('params : ' + params);
var html = '
' + params+ '
';res.writeHead(200, {'Content-Type': 'text/html'});
res.end(html);
}
});
port = 3000;
host = '127.0.0.1';
server.listen(port, host);
console.log('Listening at http://' + host + ':' + port);
Java客戶端輸出
Sending POST
Response code: 200
Response headers : {Transfer-Encoding=[chunked], null=[HTTP/1.1 200 OK], Connection=[keep-alive], Date=[Thu, 31 Dec 2015 19:40:05 GMT], Content-Type=[text/html]}
response from server: post received
Sending GET
Response code: 200
Response headers : {Transfer-Encoding=[chunked], null=[HTTP/1.1 200 OK], Connection=[keep-alive], Date=[Thu, 31 Dec 2015 19:40:05 GMT], Content-Type=[text/html]}
response from server:
test=hello
節(jié)點服務(wù)器輸出
Listening at http://127.0.0.1:3000
POST
Partial body: {"doc":{"status":"Disconnected"}}
Body: {"doc":{"status":"Disconnected"}}
GET
params : test=hello
標(biāo)簽:bash,rest,curl,java
來源: https://codeday.me/bug/20191119/2034548.html
總結(jié)
以上是生活随笔為你收集整理的curl命令java_从Java调用curl命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: InDesign 教程:如何在文档中导航
- 下一篇: 常用排序算法总结(C语言版)
