ребята!
Я пытаюсь сделать небольшое приложение для веб-службы.
На сайте есть форма с полем для входа, паролем и кнопкой для входа.
Я не могу разрезать его и вставить на свою страницу 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? Я много гуглил.
Спасибо заранее!