簡體   English   中英

Xamarin Android中的Webview狀態代碼

[英]Webview Status Code in Xamarin Android

我檢查了以下Java 資源,以從c#獲取Xamarin Android的Webview的狀態代碼。 從Xamarin文檔開始, WebResourceResponse(String,String,Stream) Stream api的類型為System.IO.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);

與:

MemoryStream stream = new MemoryStream(data);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM