public String getContent(String url) {
// okHttpClient 实例
OkHttpClient okHttpClient = new OkHttpClient();
// 定义一个request
Request request = new Request.Builder()
.url(url)
.addHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1")
.addHeader("Referer","https://www.fastmock.site/")
.addHeader("Host","www.fastmock.site")
.build();
// 返回结果字符串
String result = null;
try {
// 执行请求
Response response = okHttpClient.newCall(request).execute();
// 获取响应内容
result = response.body().string();
} catch (IOException e) {
System.out.println("request " + url + " error . ");
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
String url = "https://www.fastmock.site/mock/3d95acf3f26358ef032d8a23bfdead99/api/info/suggestion?from=web&format=json&word=刺心&third_type=0&client_type=0&version=2";
ApiAsker asker = new ApiAsker();
String content = asker.getContent(url);
// 解析结果
System.out.println("歌曲");
Map map =JSON.parseObject(content,Map.class);
Map data =(Map)map.get("data");
List songs =(List) data.get("song");
for (Object song : songs) {
Map eachsong =(Map)song;
System.out.println(eachsong.get("songname"));
}
}
Host作用Host表示当前请求的域名。虽然这个域名已经存在于URL中,但遇到复杂的场景,例如使用代理服务器、或者uRL中不写域名而是写T地址进行请求等,设置Host就非常有用了。 :::info Referer 、Host都使用与图片相同的域名,但注意二者的写法有不同哦。 :::