Post 在Xamarin WebView中发布请求?
我有一个简单的Xamarin.Forms页面,其中包含一个WebView,运行良好。 现在我想调用POST请求(发送表单数据)来获取URL。Post 在Xamarin WebView中发布请求?,post,xamarin,webview,xamarin.forms,Post,Xamarin,Webview,Xamarin.forms,我有一个简单的Xamarin.Forms页面,其中包含一个WebView,运行良好。 现在我想调用POST请求(发送表单数据)来获取URL。 我是否必须为Android、iOS和UWP创建3种不同的视图才能实现这一点?或者是否有办法在我的Xamarin表单项目的共享代码中只实现一次C#post请求代码?正如@hvaughan3所说,您可以使用HttpClient,就像这样(从Xamarin表单项目的共享代码中): 将HTTPcLient用于表单URL编码的post请求,然后创建自定义Webvie
我是否必须为Android、iOS和UWP创建3种不同的视图才能实现这一点?或者是否有办法在我的Xamarin表单项目的共享代码中只实现一次C#post请求代码?正如@hvaughan3所说,您可以使用HttpClient,就像这样(从Xamarin表单项目的共享代码中):
将HTTPcLient用于表单URL编码的post请求,然后创建自定义Webview来处理Cookie。使用seansparkman创建的CookieWebView Nuget包
请检查通过Webview发布请求 用于WkWebview
[assembly: ExportRenderer(typeof(PaymentWebview), typeof(PaymentWebViewRenderer))]
namespace MMFInvestorApp.iOS.Utils
{
public class PaymentWebViewRenderer : WkWebViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (NativeView != null)
{
var request = new NSMutableUrlRequest(new NSUrl(new NSString(paymentwebview.url))); //Your Url
request.HttpMethod = "POST";
request.Body = NSData.FromString(paymentwebview.data); //Data for POST
request["Content-Length"] = req.Body.Length.ToString();
request["Content-Type"] = "application/x-www-form-urlencoded charset=utf-8";
LoadRequest(request);
}
}
}
}
用于UIWebview(从2020年4月起弃用)
[assembly: ExportRenderer(typeof(PaymentWebview), typeof(PaymentWebViewRenderer))]
namespace MMFInvestorApp.iOS.Utils
{
public class PaymentWebViewRenderer : WebViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (NativeView != null)
{
var paymentwebview = Element as PaymentWebview;
var request = new NSMutableUrlRequest(new NSUrl(new NSString(paymentwebview.url)));//Your Url
request.Body = paymentwebview.data; //Data for POST
request.HttpMethod = "POST";
LoadRequest(request);
}
}
}
}
尝试使用
HttpClient
?谢谢。但是如何获得对webview的响应?我的POST请求是发布表单数据以登录网站。因此,用户应该登录并在登录后查看成功页面(并且应该以登录用户的身份与网站一起工作)。我不确定您想要实现什么。上面的responseFromServer变量将保存成功页面的html,您可以将其用于Web视图,但我不知道您的网站如何管理进一步请求的凭据等。我有一个带有简单登录表单的网页,我想绕过发送保存在Xamarin Ap中的凭据p通过POST发送到登录表单url,从那里开始,用户应使用登录的webview。使用HttpClient的方法,我只能将纯HTML传递到webview,而不包含cookie信息。我建议将webview指向登录表单(或应用程序的自定义版本)让网站来处理这一切。我假设webview会为你处理cookies,但我个人还没有尝试过这种事情。祝你好运!是的,我想这已经结束了。谢谢你的努力:-)
[assembly: ExportRenderer(typeof(PaymentWebview), typeof(PaymentWebViewRenderer))]
namespace MMFInvestorApp.iOS.Utils
{
public class PaymentWebViewRenderer : WebViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (NativeView != null)
{
var paymentwebview = Element as PaymentWebview;
var request = new NSMutableUrlRequest(new NSUrl(new NSString(paymentwebview.url)));//Your Url
request.Body = paymentwebview.data; //Data for POST
request.HttpMethod = "POST";
LoadRequest(request);
}
}
}
}