使用Retrofit2进行动态链接爬网

时间:2017-01-11 07:53:59

标签: android web-crawler jsoup retrofit2 whatsapp

我正在实施像WhatsApp这样的链接预览功能,即

  1. 提供任何链接,获取其所有Html
  2. 通过Html抓取,阅读所有信息
  3. 显示文字和图片
  4. WhatsApp Link Preview

    Jsoup Library

    我已成功使用Jsoup库

    执行此操作
    Document doc = Jsoup.connect("http://www.techjuice.pk").userAgent("Mozilla").get();
    

    它返回页面的html代码作为回复。

    改造图书馆

    现在我想使用Retrofit

    执行相同的任务
    Retrofit retrofit = new Retrofit.Builder()
                        .build();
    API api = retrofit.create(API.class);
    Call<ResponseBody> call = api.crawlLink("http://techjuice.pk");
    call.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
        }
    
        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
        }
    });
    

    API.class

    public interface API {
    
        @GET
        Call<ResponseBody> crawlLink(@Url String url);
    
    }
    

    异常

      

    java.lang.IllegalStateException:需要基本URL。

1 个答案:

答案 0 :(得分:0)

不幸的是,您无法以这种方式在运行时更改Retrofit中的URL。

试用本教程:https://futurestud.io/tutorials/retrofit-2-how-to-change-api-base-url-at-runtime-2

或这个答案:Set dynamic base url using Retrofit 2.0 and Dagger 2