public String getContent(String url) {// okHttpClient 实例OkHttpClient okHttpClient = new OkHttpClient();// 定义一个requestRequest 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都使用与图片相同的域名,但注意二者的写法有不同哦。 :::
