[解決済み] iOS: HTTP POST リクエストを実行するには?
質問
私はiOS開発に取り組んでおり、私の最初のアプリケーションの1つがHTTP POSTリクエストを実行するようにしたいと思います。
私が理解する限り、私はリクエストを処理する接続を
NSURLConnection
オブジェクトで管理する必要があり、そのためにデリゲートオブジェクトを持つ必要があります。
どなたか、実際の例でこのタスクを明確にしていただけませんか?
私は認証データ(ユーザー名とパスワード)を送信し、プレーンテキストの応答を得るためにhttpsのエンドポイントに連絡する必要があります。
どのように解決するのですか?
以下のようにNSURLConnectionを使用することができます。
-
設定する
NSURLRequest
: 使用するrequestWithURL:(NSURL *)theURL
を使ってリクエストを初期化します。POST リクエストおよび/または HTTP ヘッダを指定する必要がある場合は
NSMutableURLRequest
を使います。-
(void)setHTTPMethod:(NSString *)method
-
(void)setHTTPBody:(NSData *)data
-
(void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field
-
-
リクエストを送信する方法は2つあります。
NSURLConnection
:-
同期的に
(NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error
これは
NSData
変数を処理することができます。重要: UIをブロックしないように、別のスレッドで同期リクエストをキックオフすることを忘れないでください。
-
非同期で
(void)start
-
以下のように、NSURLConnectionのデリゲートに接続を処理するように設定することを忘れないでください。
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[self.data setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)d {
[self.data appendData:d];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
[[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error", @"")
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK", @"")
otherButtonTitles:nil] autorelease] show];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString *responseText = [[NSString alloc] initWithData:self.data encoding:NSUTF8StringEncoding];
// Do anything you want with it
[responseText release];
}
// Handle basic authentication challenge if needed
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
NSString *username = @"username";
NSString *password = @"password";
NSURLCredential *credential = [NSURLCredential credentialWithUser:username
password:password
persistence:NSURLCredentialPersistenceForSession];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
関連
-
[解決済み] トランスポートセキュリティがクリアテキストのHTTPをブロックしています。
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] Swift で HTTP リクエストを行うにはどうしたらいいですか?
-
[解決済み】iOSアプリの名前を変更する方法は?
-
[解決済み] drawRectを使うか使わないか(drawRect/Core Graphicsとsubview/imagesをいつ使うか、なぜ使うか)?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] hw.machine」識別子の信頼性を確認する方法は?
-
[解決済み] UILongPressGestureRecognizerが押し下げ時に2回呼び出される
-
[解決済み] iOSの配布証明書の正しい更新方法
-
[解決済み] UITableViewCellのサブビューがセルを選択すると消えてしまう
-
[解決済み] Push Notificationのアラートテキストは何文字まで可能ですか?
-
[解決済み] UITableViewのセクション間のスペースを小さくする
-
[解決済み] モバイルアプリにおけるOAuthの秘密
-
[解決済み] CALayerのanchorPointを変更すると、ビューが移動します。
-
[解決済み] AppDelegate.mで画面上に現在表示されているUIViewControllerを取得する。
-
[解決済み] iOSで入力の文字色を無効にする