1. OkHttpClient okHttpClient = new OkHttpClient();
    2. // 定义一个request
    3. Request request = new Request.Builder()
    4. .url(url).addHeader("Referer","http://photo.yupoo.com/")
    5. .build();
    6. try {
    7. // 执行请求
    8. Response response = okHttpClient.newCall(request).execute();
    9. // 打印最终响应的地址
    10. String realUrl = response.request().url().toString();
    11. System.out.println("最终响应地址:" + realUrl);
    12. // 打印状态码
    13. int code = response.code();
    14. System.out.println("状态码:" + code);
    15. } catch (IOException e) {
    16. // 抓取异常
    17. System.out.println("request " + url + " error . ");
    18. e.printStackTrace();
    19. }

    :::info Referer为与图片服务器相同的域名 :::

    public static void main(String[] args) {
        String url = "http://photo.yupoo.com/vibius/GkRSowXr/medish.jpg";
        ImageAsker asker = new ImageAsker();
        asker.getContent(url);
      }
    

    何为Referer因为浏览器在请求网页中的图片(或其它任何文件)时,会自动在HTTP消息头Headers中,加一个Referer信息,表示请求的来源(或者可以理解为图片的上级是网页)。需要强调的是,Referer表示上级页面、来源页面,不设置表示页面或图片放在浏览器中直接打开,程序中可以不设置。