首先看一下目錄結構:
module-info.java 裏面寫要導入的模塊:
module http2{
requires jdk.incubator.httpclient; #需要的模塊
exports com.zm.test; #導入到某個包下
}
接下來寫post請求:
package com.zm.test;
import jdk.incubator.http.HttpClient;
import jdk.incubator.http.HttpRequest;
import jdk.incubator.http.HttpResponse;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.zip.GZIPInputStream;
public class Http2Example02 {
public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
URI uri = new URI("https://www.baidu.com/");
HttpRequest.Builder post = HttpRequest.newBuilder(uri).POST(HttpRequest.BodyProcessor.fromString("###要請求的參數"));
//post.setHeader可以設置UA、Cookie等參數
post.setHeader("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1");
HttpClient httpClient = HttpClient.newHttpClient();
HttpResponse httpResponse = httpClient.send(post.build(), HttpResponse.BodyHandler.asString());
int code = httpResponse.statusCode();
System.out.println(code);
System.out.println(uncompress(httpResponse.body().toString().getBytes()));
}
public static String uncompress(byte[] bytes) {
if (bytes == null || bytes.length == 0) {
return null;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
try {
GZIPInputStream ungzip = new GZIPInputStream(in);
byte[] buffer = new byte[256];
int n;
while ((n = ungzip.read(buffer)) >= 0) {
out.write(buffer, 0, n);
}
} catch (IOException e) {
System.out.println(e);
}
return out.toString();
}
}