アプリケーションからの投稿リクエストをテストする方法が必要です。
にリクエストを送信http://macbook-pro.local/
しています。リクエストを読み取って表示するために実行できるサービスを見つけようとしています。
運が悪かったのでRestKitを調べました。
アプリケーションからの投稿リクエストをテストする方法が必要です。
にリクエストを送信http://macbook-pro.local/
しています。リクエストを読み取って表示するために実行できるサービスを見つけようとしています。
運が悪かったのでRestKitを調べました。
必要なのは基本的に非常に単純なWebサーバーですが、HTTP POSTリクエストに含まれるものを印刷するだけの場合は、組み込みの「nc」コマンドを使用して回避できます。次のようなループで「nc」を実行することにより、ターミナルを使用してローカルポート10000での着信要求の内容を出力できます。
while true; do nc -l 10000 < /dev/null ; printf '\n\n\n'; done
次にhttp://localhost:10000
、ブラウザでに移動し、HTTPリクエストがターミナルウィンドウに表示されることを確認できます。'nc'は応答するほど賢くないため、Webブラウザはエラーメッセージを表示します。
HTTP POSTリクエストをテストするには、「curl」を使用できます。
curl --data "this-is-POST-data" http://localhost:10000
繰り返しになりますが、「nc」は適切なHTTP応答を提供せずに接続を閉じるだけなので、curlはエラーメッセージを表示します。次のようなすべてのリクエストに対して、静的HTTP応答で「nc」応答を返すことができます。
while true; do printf 'HTTP/1.0 200 OK\r\nContent-type: text-plain\r\n\r\nHello, world!' | nc -l 10000 ; printf '\n\n\n'; done
ポート80を使用する必要がある場合は、ルートとして「nc」を実行する必要があります(たとえば、「sudo」を使用します)。
ただし、実際のHTTPトラフィックを実行する必要がある場合は、適切なWebサーバーを取得する必要があります。OSXにはApacheWebサーバーが付属しており、コマンド「apachectlstart」(「apachectlstop」で停止)で起動できます。CGIが有効になっているため、実行可能ファイルを/ Library / WebServer / CGI-Executablesに配置し、を使用してそれらにアクセスできますhttp://localhost/cgi-bin/filename
。たとえば、次のCGIスクリプトを作成する場合:
#!/bin/sh
printf 'Content-type: text/plain\r\n\r\n'
cat > /tmp/post-data
echo OK
これを「test.sh」と呼び、CGI-Executablesフォルダーに配置して、次のコマンドを実行します。
chmod +x /Library/WebServer/CGI-Executables/test.sh
次に、POSTリクエストを送信するhttp://localhost/cgi-bin/test.sh
と、POSTデータの内容がコンピューターのファイル/ tmp/post-dataに保存されます。
注:すべての例で、「localhost」を「macbook-pro.local」に置き換えて、それがコンピューターのホスト名である場合、ネットワーク経由でアクセスできます。
また、OS Xファイアウォールのアクセス許可により、「nc」およびその他のソフトウェアがTCPポートをリッスンするのをブロックする場合があることにも注意してください。通常、アクセス許可ダイアログが表示されますが、単に「アクセス許可が拒否されました」と表示された場合は、[システム環境設定]->[ファイアウォール]->[ファイアウォールオプション]でファイアウォール設定を微調整します。
これらは、GETデータを解析するためにuが書き込むことができるサンプル行です。
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSDictionary *dict = [parser objectWithData:urlData];
[dictionary setDictionary:dict];
[parser release];
これらは、POSTデータに書き込むことができるサンプル行です。
SBJsonWriter *writer = [[SBJsonWriter alloc] init];
jsonStr = [writer stringWithObject:dictionary];
[writer release];
フレームワークには、いくつかの便利なことを行うためのメソッドがもっとたくさんあります。