webView表单将空格发布为“+”而不是“%20”Xamarin Android

时间:2016-08-12 11:24:47

标签: android xamarin webview hybrid-mobile-app

我正在关注混合应用程序示例,该示例覆盖WebViewClient.ShouldOverrideUrlLoading以拦截链接和帖子。由于这不适用于POST,我使用GET表单。但是,表单控件值被编码并放入传递给ShouldOverrideUrlLoading的URL中,但编码使用“+”而不是“%20”,就像我的ASP.NET Web应用程序版本一样。我可以这样做:

url = url.Replace("+", " ");

但是,如果用户想要在编辑字段中输入“+”,该怎么办?强迫他们使用“%43”和/或“+”等某种逃脱的唯一方法是什么?这样我就需要做类似的事情:

url = url.Replace("+", " ");
url = url.Replace("%2543", "+");
url = url.Replace("%26%2343%3B", "+");

1 个答案:

答案 0 :(得分:0)

这似乎是Url编码表单字段的标准。

根据Wikipedia

  

当提交已输入HTML表单的数据时,表单字段名称和值将被编码并使用方法GET或POST在HTTP请求消息中发送到服务器,或者历史上通过电子邮件发送到服务器。[2]默认情况下使用的编码基于一般URI百分比编码规则的早期版本,[3]具有许多修改,例如换行标准化和用“+”而不是“%20”替换空格。以这种方式编码的因特网媒体类型的数据是application / x-www-form-urlencoded,并且它当前在HTML和XForms规范中定义(仍然以非常过时的方式)。此外,CGI规范包含有关Web服务器如何解码此类数据并使其可供应用程序使用的规则。

因此,您必须对URL进行取消编码才能使用它,并将加号适当地更改为空格。