2016-08-12 17 views
2

WebViewClient.ShouldOverrideUrlLoadingをオーバーライドしてリンクと投稿を傍受するハイブリッドアプリの例に従っています。これはPOSTでは動作しないので、私はフォームにGETを使用します。しかし、フォームコントロールの値はエンコードされ、ShouldOverrideUrlLoadingに渡されたURLに入れられますが、ASP.NET Webアプリケーションのバージョンと同じように、エンコードでは「%20」ではなく「+」が使用されます。私は簡単に行うことができます:webViewフォームは "%20"ではなく "+"としてスペースを投稿します。Xamarin Android

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

しかし、ユーザーが編集フィールドで「+」を使用する場合はどうなりますか? "%43"や "+"のようなエスケープを使用する唯一の方法はありますか?こうすると、私は次のようなことをする必要があります:

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

答えて

0

これはフォームフィールドをエンコードするURLの標準のようです。

HTMLフォームに入力されたデータが送信されるとWikipedia

によれば、フォームフィールドの名前と値が符号化されると、メソッドGETまたはPOSTを使用してHTTPリクエストメッセージでサーバに送信され、又は歴史的には、電子メールを介して。[2]デフォルトで使用されるエンコーディングは、改行の正規化や "%20"ではなく "+"でのスペースの置換など、いくつかの変更が加えられた一般的なURIパーセント符号化ルール[3]の初期バージョンに基づいています。この方法でエンコードされたデータのインターネットメディアタイプは、application/x-www-form-urlencodedであり、HTMLおよびXFormsの仕様では現在(まだ古くなった形で)定義されています。さらに、CGI仕様には、Webサーバーがこのタイプのデータをどのようにデコードし、アプリケーションで使用できるようにするためのルールが含まれています。

URLを使用して作業するには、URLのエンコードを解除して、適切なスペースに変更してください。

+0

ありがとうございます。標準であるかどうかにかかわらず、理想的ではないようです。 URLは確かに人間が読むことができますが、投稿されたデータは悪いです。私は、オプションまたはコールバックのオーバーライドがあったと思います。 – jtsoftware

関連する問題