小さなTwitterクライアントを実行しようとしています。認証が必要なAPI呼び出しをテストするときに問題が発生しました。iPhoneでの基本的なHTTP認証
パスワードに特殊文字が含まれているため、次のコードを使用しようとすると機能しません。
NSString *post = [NSString stringWithFormat:@"status=%@", [status stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@:%@@%@/statuses/update.json", username, password, TwitterHostname]];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLResponse *response;
NSError *error;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
私はbase64を調べ、ヘッダーに認証を入れ始めました。彼のbase64の実装ではDave Dribin'sの投稿が見つかりました。それは意味をなさないようでした。しかし、私はそれを使用しようとしたときに、コンパイラはopensslライブラリを見つけられなかったと不満を持ち始めました。だから私はlibcryptoライブラリにリンクする必要があることを読んだが、それはiphoneのために存在しないようだ。
私は、リンゴは暗号ライブラリを使用するアプリケーションを許可しないと言っている読者も読んでいますが、それは私にとって意味のないものです。
だから私はちょっと固まって混乱しています。私のアプリに基本認証を与える最も簡単な方法は何ですか?
乾杯
(NSURLAuthenticationChallenge *)挑戦:リクエストのデリゲート:自己とデリゲートでdidReceiveAuthenticationChallengeをセットアップしますが、何も呼び出されません。他のNSURLConnectionデリゲートメソッドを試してみましたが、どちらもうまくいきませんでした。何か案は? – Meroon
私はデリゲートメソッドがうまくいかない理由を理解しました。私は動作しないクラスメソッドからinitWithRequestを呼び出していました。助けてくれてありがとう。 – Meroon
申し訳ありませんが、不必要に簡潔な回答です(ただし、最後にはうれしいです)。私はそれを拡大しました。うまくいけば、もう少し役に立つはずです。 –