小编Can*_*ins的帖子

改进2.0标头身份验证

private void setUpRestClient() {
       OkHttpClient client = new OkHttpClient();
       client.interceptors().add(new Interceptor() {
           @Override
           public Response intercept(Chain chain) throws IOException {
               Request original = chain.request();
               Request request = original.newBuilder()
                       .header("Accept", "application/pyur.v1")
                       .header("Authorization", new SharedPreferencesUtil(getBaseContext()).getToken())
                       .header("Content-Type", "application/json")
                       .method(original.method(),original.body())
                       .build();
               return chain.proceed(request);
           }
       });
       RestClient.getInstance().configureRestAdapter(this, getResources().getString(R.string.base_url),client);
   }

public void configureRestAdapter(final Context context, String baseUrl, OkHttpClient client) {
    Gson gson = new GsonBuilder()
            .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
            .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
            .excludeFieldsWithModifiers(Modifier.FINAL, Modifier.TRANSIENT, Modifier.STATIC)
            .create();
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(baseUrl)
            .addConverterFactory(GsonConverterFactory.create(gson))
            .client(client)
            .build();
    service = retrofit.create(NetworkServiceInterface.class);
}
Run Code Online (Sandbox Code Playgroud)

这现在让我在Retrofit 2.0中失败了,最初我没有"授权"标题,并且它给了我未经授权的,这是可以理解的.但是现在我用我的身份验证令授权它并且它失败了.Retrofit …

interceptor http-headers retrofit2

7
推荐指数
3
解决办法
2万
查看次数

获取 Puppeteer 中 XPath 的所有链接(暂停或不起作用)?

我需要使用 XPath 选择页面上的所有链接,然后我的 Puppeteer 应用程序才能单击并执行一些操作。我发现该方法(下面的代码)有时会卡住,我的爬虫会暂停。是否有更好/不同的方式从 XPath 获取所有链接?或者我的代码中是否存在不正确的内容并且可能会暂停我的应用程序的进度?

try {
  links = await this.getLinksFromXPathSelector(state);
} catch (e) {
  console.log("error getting links");
  return {...state, error: e};
}
Run Code Online (Sandbox Code Playgroud)

其中调用:

async getLinksFromXPathSelector(state) {
 const newPage = state.page
 // console.log('links selector');
 const links = await newPage.evaluate((mySelector) => {
   let results = [];
   let query = document.evaluate(mySelector,
     document,
     null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
   for (let i=0, length=query.snapshotLength; i<length; ++i) {
     results.push(query.snapshotItem(i).href);
   }
   return results;
 }, state.linksSelector);
  return links;
}
Run Code Online (Sandbox Code Playgroud)

XPath 位于state.linksSelector.

javascript xpath node.js google-chrome-devtools puppeteer

2
推荐指数
1
解决办法
6245
查看次数