読者です 読者をやめる 読者になる 読者になる

Xojo日本語ブログ

マルチプラットフォーム対応アプリが開発できるXojoのブログです。

XojoでURLエンコードをするには?

Tips Web

HTTPSecureSocketやHTTPSocketを使ってHTTP/HTTPSアクセスを行う際にはクエリ文字列をエンコードしておく必要があります。その際に使うのがEncodeURLComponentです。

Dim s as String
s=EncodeURLComponent("www.Bob&Ray.com")   //returns "www.bob%26ray.com"

のように使います。

なお、多くの場合はクエリパラメータは複数になるでしょう。そこでDictionaryを使うのが良いでしょう。キーが配列の場合はこれよりも若干複雑になりますが、基本的には配列を使ってEncodeURLComponentでキーと値をエンコードしてあげればOKです。

Dim params as new Dictionary
params.Value("a") = "日本語"
params.Value("b") = "&#=,+ "
params.Value("キー") = "値"

Dim query() as String
FOR Each key As String In params.keys
  query.Append(EncodeURLComponent(key) + "=" + EncodeURLComponent(params.value(key)))
next

System.DebugLog(Join(query, "&"))
// a=%E6%97%A5%E6%9C%AC%E8%AA%9E&b=%26%23%3D%2C%2B%20&%E3%82%AD%E3%83%BC=%E5%80%A4

逆にデコードする場合は DecodeURLComponent を使います。

WebアクセスやWeb APIを利用する際にはこの方法を使ってみてください。