Получить Div от веб-службы и поместить его в HybridWebView для приложений на основе Xamarin - PullRequest
0 голосов
/ 11 сентября 2018

ребята! Я пытаюсь сделать небольшое приложение для веб-службы. На сайте есть форма с полем для входа, паролем и кнопкой для входа. Я не могу разрезать его и вставить на свою страницу Xamarin. Я знаю, что должен использовать API, но мне не удалось его получить.

Так что это HTML с веб-сайта.

    <form name="form_auth" method="post" target="_top" action="/index.php?login=yes">
<div class="toplogin-input">
    <input type="hidden" name="AUTH_FORM" value="Y">
    <input type="hidden" name="TYPE" value="AUTH">
        <input type="hidden" name="backurl" value="/index.php">
            <!--[if IE]><span class="login-label">Логин</span><![endif]-->
            <input class="toplogin-login-inp" type="text" name="USER_LOGIN" placeholder="Логин" value="" maxlength="255">
            <!--[if IE]><span class="login-label">Пароль</span><![endif]-->
            <input class="toplogin-login-inp" type="password" name="USER_PASSWORD" placeholder="Пароль" maxlength="255">
        <div class="login-text login-item">
                                </div>
        <input type="submit" value="Войти" class="toplogin-btn" onclick="BX.addClass(this, 'wait');">
        <a class="toplogin-a-pass" href="/index.php?forgot_password=yes">Забыли свой пароль?</a>    
</div>
</form>

Я даже пытался использовать XPATH, чтобы вставить эту форму в мое приложение. Хорошо, я написал код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace Navigation
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class LoginFormPage : ContentPage
    {
        public string WebViewUrl = "http://myurl";
        public string LoginCallback = "login";
        public string DisplayLoginAlertFunctioName = "displayLoginAlert";
        public string Username;
        public string Password;
        public LoginFormPage()
        {
            InitializeComponent();
            var serializer = new JsonSerializer();

            var webView = new HybridWebView(serializer)
            {
                VerticalOptions = LayoutOptions.FillAndExpand,
                Margin = new Thickness(20, 30),
                Uri = new Uri(WebViewUrl)
            };
            webView.RegisterCallback(LoginCallback, (arg) =>
            {
                var loginForm = serializer.Deserialize<LoginFormDto>(arg);
                var result = loginForm.Username == Username;
                webView.CallJsFunction(DisplayLoginAlertFunctioName, new[] { result.ToString() });
            });
            Content = webView;
        }
    }
}

И мой xaml:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Navigation.LoginFormPage"
             xmlns:local="clr-namespace:CustomRenderer;assembly=CustomRenderer"         
    <ContentPage.Content>
        <StackLayout>
          <local:HybridWebView x:Name="hybridWebView" Uri="index.html"
          HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

Я хочу, чтобы при запуске приложения я получил форму для входа в систему и смог заполнить поля, нажмите кнопку «Вход» и получите полную следующую страницу после входа в систему.

Как правильно использовать HybridWebView? На самом деле мне не нужно вставлять полную страницу входа в свое приложение. Я хочу вырезать часть HTML. Могу ли я вырезать только определенный div из HTML? Я много гуглил.

Спасибо заранее!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...