【问题标题】:XWalkResourceClient.shouldInterceptLoadRequest seems not working properlyXWalkResourceClient.shouldInterceptLoadRequest 似乎无法正常工作
【发布时间】:2017-01-14 05:57:55
【问题描述】:

我正在尝试覆盖 url 加载。自定义 http 请求是通过 okhttp 库实现的。应用程序似乎启动良好,但启动后立即关闭。我已经仔细检查了返回的 mime-type 设置为 text/html 等等。那么问题出在哪里?这是我的代码:

public class MyXWalkResourceClient extends XWalkResourceClient {
    @Override
    public XWalkWebResourceResponse shouldInterceptLoadRequest(XWalkView view, XWalkWebResourceRequest request) {
        Map<String, String> headers = request.getRequestHeaders();
        headers.put("Accept-Language", "ru,en-US;q=0.8,en;q=0.6");

        Request okHttpRequest = new Request.Builder()
                .url(request.getUrl().toString())
                .headers(Headers.of(headers))
                .build();

        Response okHttpResponse = null;
        try {
            okHttpResponse = client.newCall(okHttpRequest).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }

        if (okHttpResponse == null) {
            return null;
        }

        XWalkWebResourceResponse resourceResponse = createXWalkWebResourceResponse(
                okHttpResponse.body().contentType().toString().split(";")[0],
                okHttpResponse.body().contentType().charset().name(),
                okHttpResponse.body().byteStream(),
                okHttpResponse.code(),
                okHttpResponse.message(),
                toRegularMap(okHttpResponse.headers().toMultimap()));
        return resourceResponse;
    }

    private Map<String, String> toRegularMap(Map<String, List<String>> multimap) {
        Map<String, String> resultMap = new HashMap<>();
        for (Entry<String, List<String>> entry : multimap.entrySet()) {
            resultMap.put(entry.getKey(), TextUtils.join(",", entry.getValue()));
        }
        return resultMap;
    }
}

【问题讨论】:

    标签: android networking crosswalk-runtime intercept crosswalk


    【解决方案1】:

    好的。似乎答案很简单。我只需要检查这个表达式是否为空:okHttpResponse.body().contentType().charset()

    【讨论】:

      猜你喜欢
      • 2017-09-04
      • 2012-05-06
      • 2013-02-17
      • 2017-10-09
      • 2017-08-03
      • 2014-05-02
      • 2011-09-11
      • 2016-02-11
      • 1970-01-01
      相关资源
      最近更新 更多