2017-01-14 8 views
0

URLの読み込みを無効にしようとしています。カスタムhttpリクエストは、okhttpライブラリを通じて実装されます。アプリはうまく始まっているようだが、起動直後は終了する。私は返されたMIMEタイプがtext/htmlのように設定されているかを二重チェックしました。ではどこに問題がありますか?ここに私のコードです:XWalkResourceClient.shouldInterceptLoadRequestが正しく動作していないようです。

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; 
    } 
} 

答えて

0

OKです。答えは簡単だったようだ。この式をnullにすることを確認するだけです:okHttpResponse.body().contentType().charset()

関連する問題