0
WebView에서 서버에 사용자 정의 헤더를 보내려고합니다.WebView : 사용자가 webview 링크를 클릭하면 사용자 정의 헤더 추가
내 솔루션은로드 된 첫 페이지에서 제대로 작동하지만 사용자가 webView에서 링크를 클릭하면 작동하지 않습니다.
코드를 준수하십시오.
나는 나의 주인 클래스와 웹보기를 확장하고 몇 가지 방법 오버라이드 :public class SMWebView extends WebView {
private final static HashMap<String,String> httpHeaders = new HashMap<>();
...
@Override
public void loadUrl(String url) {
super.loadUrl(url,httpHeaders);
}
@Override
public void loadUrl(String url, Map<String, String> additionalHttpHeaders) {
if(additionalHttpHeaders!=null) {
additionalHttpHeaders.putAll(httpHeaders);
super.loadUrl(url, additionalHttpHeaders);
}
else{
super.loadUrl(url, httpHeaders);
}
}
public HashMap<String,String> getHttpHeaders(){
return httpHeaders;
}
}
나는 또한
public class SMWebViewClient extends WebViewClient {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
android.util.Log.i("MyWebViewClient", "attempting to load resource: " + request.getUrl());
if(view.getClass().equals(SMWebView.class)){
SMWebView smWebView = (SMWebView) view;
request.getRequestHeaders().putAll(smWebView.getHttpHeaders());
request.getRequestHeaders().put("HIDE_MENU","true");
}
return super.shouldInterceptRequest(view,request);
}
}
을 WebViewClient 확장을 그리고 MainActivity에서 모두 사용 :
public class MainActivity extends AppCompatActivity implements DrawerMenuItem.DrawerCallBack{
@BindView(R.id.main_webview) SMWebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
webView.setWebViewClient(new SMWebViewClient());
webView.clearCache(true);
webView.clearHistory();
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.loadUrl(Constant.baseUrl + Constant.homeUrl);
}
...
}
어떻게 webView의 링크를 클릭해도 각 사용자 정의 헤더를 각 reqeust에 보냅니 까?
어쩌면 나는이 게시물에 설명되어 이유를 발견 https://stackoverflow.com/questions/38412965 – fciri