java有请求头和json数据,http发post请求的方法
时间: 2024-06-10 22:07:04 浏览: 9
可以使用Java的HttpURLConnection类或者Apache的HttpClient库来发起POST请求,先设置请求头,再将json数据转换成字节数组或字符串体,然后设置请求体,最后发送请求并处理响应。具体实现可以参考以下代码片段:
使用HttpURLConnection类:
```java
URL url = new URL("http://example.com/api");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("User-Agent", "Java client");
conn.setDoOutput(true);
String json = "{\"key\": \"value\"}";
OutputStream os = conn.getOutputStream();
byte[] input = json.getBytes("utf-8");
os.write(input, 0, input.length);
os.flush();
os.close();
int responseCode = conn.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(
conn.getInputStream(), "utf-8"));
String response = in.readLine();
in.close();
System.out.println(response);
} else {
System.out.println("POST request failed, response code: " + responseCode);
}
conn.disconnect();
```
使用Apache的HttpClient库:
```java
CloseableHttpClient client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("http://example.com/api");
httpPost.setHeader("Content-Type", "application/json");
httpPost.setHeader("User-Agent", "Java client");
String json = "{\"key\": \"value\"}";
StringEntity entity = new StringEntity(json);
httpPost.setEntity(entity);
HttpResponse response = client.execute(httpPost);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
String result = EntityUtils.toString(response.getEntity(), "utf-8");
System.out.println(result);
} else {
System.out.println("POST request failed, response code: " + statusCode);
}
client.close();
```