2016-08-12 61 views
2

我遵循混合應用示例,覆蓋WebViewClient.ShouldOverrideUrlLoading攔截鏈接和帖子。由於這不適用於POST,因此我使用GET來獲取表單。但是,表單控件值被編碼並放入傳遞給ShouldOverrideUrlLoading的URL中,但編碼使用「+」而不是「%20」,就像我的ASP.NET Web應用程序版本一樣。我可以簡單地做:webView形式發佈空間爲「+」而不是「%20」Xamarin Android

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

但是,那麼如果用戶想要在編輯字段中的「+」?是迫使他們使用諸如「%43」和/或「+」之類的某種轉義的唯一方法嗎?因此,我需要做類似的事情:

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

回答

0

這似乎是Url編碼表單字段的標準。

根據Wikipedia

當已經輸入到HTML表格數據使用方法GET或POST被提交時,表單字段名稱和值進行編碼並將其發送到服務器的HTTP請求消息,或,歷史上,通過電子郵件。[2]默認使用的編碼基於通用URI百分比編碼規則的早期版本[3],並進行了一些修改,如換行標準化,並用「+」而不是「%20」替換空格。以這種方式編碼的互聯網媒體類型的數據是application/x-www-form-urlencoded,它目前在HTML和XForms規範中定義(仍然是非常過時的方式)。此外,CGI規範還包含有關Web服務器如何解碼此類數據並使其可供應用程序使用的規則。

因此,您將不得不取消編碼URL以使用它,並將其中的正確值更改爲空格。

+0

感謝您的關注。標準與否,看起來不太理想。當然,更多的人對URL可讀,但對發佈的數據不利。我希望有一個選項或回調覆蓋。 – jtsoftware