2017-01-14 16 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

확인. 응답은 간단했다. 이 표현식을 null로 확인하기 만하면됩니다. okHttpResponse.body().contentType().charset()