Android WebView:获取响应头HTML

Android WebView:获取响应头HTML,android,xamarin.android,android-webview,Android,Xamarin.android,Android Webview,在我的Xamarin应用程序中,我使用WebView从服务检索数据。信息存储在HTML头部的元标记中 在Xamarin.iOS中,我可以通过以下代码访问此信息: webView.LoadFinished += async (sender, args) => { var request = webView.Request; if (request != null) { var url = request.Url.AbsoluteString;

在我的Xamarin应用程序中,我使用WebView从服务检索数据。信息存储在HTML头部的元标记中

Xamarin.iOS中,我可以通过以下代码访问此信息:

webView.LoadFinished += async (sender, args) => {
    var request = webView.Request;
    if (request != null) {
        var url = request.Url.AbsoluteString;
        var data = NSData.FromUrl(NSUrl.FromString(Url));
        var content = data.ToString();
        var splits = content.Split("<meta").ToList();

        var taggedSplit = splits.Find(x => x.Contains("myTag"));
                    if (!string.IsNullOrEmpty(taggedSplit)) {
                        // do stuff 
                    }
    }
}
webView.LoadFinished+=async(发送方,参数)=>{
var request=webView.request;
if(请求!=null){
var url=request.url.AbsoluteString;
var data=NSData.FromUrl(NSUrl.FromString(Url));
var content=data.ToString();

var splits=content.Split(“您可以通过注入一段js代码来获得该值,这里是一个简单的示例,您可以检查它

在活动中:

protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.activity_other);         
        webView = FindViewById<WebView>(Resource.Id.webView1);
        webView.SetWebViewClient(new WebViewClientClass());
        WebSettings websettings = webView.Settings;
        websettings.JavaScriptEnabled = true;
        websettings.DomStorageEnabled = true;

        webView.AddJavascriptInterface(new Foo(this), "Foo");
        webView.LoadUrl("file:///android_asset/demo.html");

    }

  class WebViewClientClass : WebViewClient
    {

        public override void OnPageFinished(WebView view, string url)
        {

            //access to parse < meta name = "viewport" content = "get the value of content" >
            view.LoadUrl("javascript:window.Foo.showSource("
                         + "document.querySelector('meta[name=\"viewport\"]').getAttribute('content')"
                         + ");");
            base.OnPageFinished(view, url);
        }

    }

 class Foo : Java.Lang.Object
  {
     Context context;

     public Foo(Context context)
      {
        this.context = context;
      }
    [JavascriptInterface]
    [Export]
    public void showSource(string source)
    {
        // here you could get the value of meta content
        // in this example,i could get source = "width =device-width,initial-scale=1, maximum-scale=1"
        Log.Error("content", html);

    }
 }
protectedoverride void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_other);
webView=findviewbyd(Resource.Id.webView1);
SetWebViewClient(新的WebViewClientClass());
WebSettings-WebSettings=webView.Settings;
websettings.JavaScriptEnabled=true;
websettings.DomStorageEnabled=true;
AddJavascriptInterface(新的Foo(this),“Foo”);
webView.LoadUrl(“file:///android_asset/demo.html");
}
类WebViewClientClass:WebViewClient
{
公共覆盖无效OnPageFinished(WebView视图,字符串url)
{
//访问解析
view.LoadUrl(“javascript:window.Foo.showSource(”
+“document.querySelector('meta[name=\'viewport\').getAttribute('content')”
+ ");");
base.OnPageFinished(视图、url);
}
}
类Foo:Java.Lang.Object
{
语境;
公共Foo(上下文)
{
this.context=上下文;
}
[JavascriptInterface]
[出口]
公共void showSource(字符串源)
{
//在这里你可以得到元内容的价值
//在这个例子中,我可以得到source=“width=devicewidth,initial scale=1,maximum scale=1”
Log.Error(“内容”,html);
}
}
本地html:

<html>
  <head>
    <meta name="viewport" content="width =device-width,initial-scale=1, maximum-scale=1">
  </head>
  <body>
     ...
  </body>
</html>

...

我认为您无法在Android中访问WebView的请求头。