Как передать данные JSON в Xamarin формы веб-просмотра на стороне Android - PullRequest
0 голосов
/ 15 сентября 2018

Я использую веб-форму xamarin и хочу передать имя пользователя и пароль json body с URL, как показано ниже.

enter image description here

Я реализую гибридное веб-представление в формах xamarin

Мой код PCL:

public class HybridWebView : WebView
    {
        Action<string> action;
        public EventHandler<bool> WebNavigating;


        public void RegisterAction (Action<string> callback)
        {
            action = callback;
        }

        public void Cleanup ()
        {
            action = null;
        }

        public void InvokeAction (string data)
        {
            if (action == null || string.IsNullOrEmpty(data)) {
                return;
            }
            action.Invoke (data);
        }
    }

Мой код Android HybridWebViewRenderer:

 public class HybridWebViewRenderer : ViewRenderer<HybridWebView, Android.Webkit.WebView> 
{

    Context _context;

    public HybridWebViewRenderer(Context context) : base(context)
    {
        _context = context;
    }

    protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e)
    {
        base.OnElementChanged(e);

        if (Control == null)
        {
            var webView = new Android.Webkit.WebView(_context);
            webView.Settings.JavaScriptEnabled = true;
            webView.SetWebViewClient(new MyWebViewClient(webView,e,this));
            SetNativeControl(webView);
        }
    }
}

public class MyWebViewClient : WebViewClient
{
    const string JavaScriptFunction = "function invokeCSharpAction(data){jsBridge.invokeAction(data);}";
    public Android.Webkit.WebView _webView;
    public Android.Webkit.WebView WebView
    {
        get
        {
            return _webView;
        }
    }

    public ElementChangedEventArgs<HybridWebView> _element;

    public MyWebViewClient(Android.Webkit.WebView view, ElementChangedEventArgs<HybridWebView> element, HybridWebViewRenderer x)
    {
        _webView = view;
        _element = element;

        if (_element.OldElement != null)
        {
            _webView.RemoveJavascriptInterface("jsBridge");
            var hybridWebView = _element.OldElement as HybridWebView;
            hybridWebView.Cleanup();
        }
        if (_element.NewElement != null)
        {
            _webView.AddJavascriptInterface(new JSBridge(x), "jsBridge");

            string url = "https://Myspecific.com/Account/MobileLogin";
           string postData = "{\"UserName\":\"User1\",\"Password\":\"pass123\",\"RememberMe\":false}";
            _webView.PostUrl(url, Encoding.UTF8.GetBytes(postData));
        }
    }

выход: Показывает неверное имя пользователя и пароль

Пожалуйста, помогите ...

Заранее спасибо ...

...