.-- --

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 comment(-) trackback(-)
.01 2009

ネットワークプログラミング入門編(5)

Tasaki です。

今回でネットワークプログラミング入門編も5回目となりました。
前回までの4回で、送信と受信についてのお話は終わっていますが、今回は僕が実装中にハマった落とし穴について解説しておこうと思います。

それは、HTTP リクエスト作成時に、サーバ側へクエリとしてパラメータを渡す場合の注意点です。HTTP プロトコルを利用する場合には、RFC1808 に従った文字列を渡す必要があります。
つまり、任意の文字列をそのまま URL として渡してよい、というわけではありません。
ここで、1番問題になりそうなのが空白文字です。これを URL に含めてしまうと、リクエスト送信時にコネクションエラーが発生してしまいます。
このような場合には、エスケープ文字を使用して文字を文字コードに置き換えておく必要があります。例えば半角スペースなら、%20といった具合です。

Cocoa には、これを簡単に実現できる以下のメソッドが用意されています。

- ( NSUInteger ) replaceOccurrencesOfString:( NSString *) target withString:( NSString *) replacement options:( NSStringCompareOptions ) opts range:( NSRange ) searchRange;


target には置換後の文字列(%20)、replacement には置換対象の文字列 (半角スペース)、opts には文字列比較オプション、searchRange には、レシーバ文字列(URL文字列)内の適用範囲を与えます。なお、返り値は置換操作の実施回数が渡されます。

これを使用して、実際に URL 文字列内の半角スペースをエスケープするコードを示します。

[ urlString replaceOccurencesOfString: @"%20" withString: @" " options: NSLiteralSearch range: NSMakeRange( 0, [ urlString length ])];

ちょっと長ったらしいですが、これを使えば1行で済んじゃいますのでとても楽です。
NSString クラスのメソッドは癖のあるものも多いですが、非常に便利なので、なるべく修得しておきたいですね。


関連記事
スポンサーサイト

Comment

Post comment

  • comment
  • secret
  • 管理者にだけ表示を許可する

Trackback

trackbackURL:http://appteam.blog114.fc2.com/tb.php/64-6414afa5

ブログ内検索

関連リンク

製品情報

最新記事

カテゴリ

プロフィール

neoxneo



NEXT-SYSTEM iOS Developers Blog


  • UTO:
    カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


  • Ehara:
    ...


  • Hayate:
    ...


  • Tasaki:
    Developer登録完了...したのはいいけど


  • Ueda:
    ...



リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。