使用java模拟curl,如下面的curl请求转换成java
curl -s -k "http://host:ip/ubus?account_id=xxx" -H "Content-Type: application/json" -H "X-Auth-Role: Partner" -d '{"jsonrpc":"2.0","id": 1,"method":"call","params":["", "server", "getxxx",{}]}'
-H请求的URL的Header,
-d提交的data
下面为java实例代码
private String ubusPost(String urlPath, String data) throws IOException {
// 建立连接
URL url = new URL(urlPath);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
// 设置参数
httpConn.setDoOutput(true); // 需要输出
httpConn.setDoInput(true); // 需要输入
httpConn.setUseCaches(false); // 不允许缓存
httpConn.setRequestMethod("POST"); // 设置POST方式连接
//设置发送数据的格式
httpConn.setRequestProperty("Content-Type", "application/json");
httpConn.setRequestProperty("X-Auth-Role", "Partner");
// 设置接收数据的格式
httpConn.setRequestProperty("Accept", "application/json");
httpConn.setRequestProperty("Connection", "Keep-Alive");
httpConn.setRequestProperty("Charset", "UTF-8");
// 连接,也可以不用明文connect,使用下面的httpConn.getOutputStream()会自动connect
httpConn.connect();
// 建立输入流,向指向的URL传入参数
DataOutputStream dos = new DataOutputStream(httpConn.getOutputStream());
dos.writeBytes(data);
dos.flush();
dos.close();
// 获得响应状态
int resultCode = httpConn.getResponseCode();
StringBuffer sb = new StringBuffer();
if (HttpURLConnection.HTTP_OK == resultCode) {
String readLine = new String();
BufferedReader responseReader = new BufferedReader(
new InputStreamReader(httpConn.getInputStream(), "UTF-8"));
while ((readLine = responseReader.readLine()) != null) {
sb.append(readLine).append("\n");
}
responseReader.close();
logger.info(sb.toString());
}
return sb.toString();
}