Xamarin Android中的WebView状态代码



我检查了以下Java资源,以获取C#的Xamarin Android的WebView的状态代码。如Xamarin文档,Webresourceresponse(String,String,Stream(流API是类型 System.io.Strom.Stream 。我需要将 java.io.inputStream 转换为 system.io.stream

是否可以转换这些类型?如果不是什么,可能的解决方案是什么。我是Xamarin的新手。请帮忙。

private static string http = "https?://[\w\.\-]+(/.*)?";
Regex regex = new Regex(http);
public override WebResourceResponse ShouldInterceptRequest(WebView webView, string url)
{
    if (!regex.IsMatch(http))
    {
        return ShouldInterceptRequest(webView, url);
    }
    HttpGet req= new HttpGet(url);
    DefaultHttpClient client = new DefaultHttpClient();
    String mimetype = null, encoding = null;
    byte[] data = null;
    try
    {
        var response = client.Execute(req); 
        if (HttpStatus.ScOk == response.StatusLine.StatusCode)
        {
            var httpentity = response.Entity;
            var header = httpentity.ContentType;
            if (null != mimetype) mimetype = header.Value;
            var encodingheader = httpentity.ContentEncoding;
            if (null != encodingheader) encoding = encodingheader.Value;
            data = EntityUtils.ToByteArray(httpentity);
        }
    }
    catch (Exception e)
    {
        String msg = e.Message;
        Log.Error(this.Class.SimpleName, (null != msg) ? msg : "");
    }
    finally
    {
        req.Abort();
        client.ConnectionManager.Shutdown();
    }
    Java.IO.InputStream stream = new ByteArrayInputStream(data);
    // this is the error i get
    // cannot convert from 'Java.IO.InputStream' to 'System.IO.Stream'
    // Argument type 'Java.IO.InputStream' is not assignable to parameter type 'System.IO.Stream'
    return new WebResourceResponse(mimetype, encoding, stream);
}

是否可以转换这些类型?

答案是否。

在您的问题中,您可以使用MemoryStream类,它可以接受Byte[]作为其构造中的参数。

替换

Java.IO.InputStream stream = new ByteArrayInputStream(data);

with:

MemoryStream stream = new MemoryStream(data);

相关内容

最新更新