0

Railsバックエンドと通信しようとしているiPhoneアプリがあります。NSMutableURLRequest を使用してデータをやり取りしています。GET リクエストではすべての呼び出しが正常に機能しますが、データを投稿する必要がある場合、Rails アプリがセッションを見つけられないようです。get リクエストと POST リクエストの両方について、以下のコードを投稿しました。

これは POST リクエストです。

//Set up the URL
NSString *url_string = [NSString stringWithFormat:@"https://testserver.example.com/players.xml"];
NSURL *url = [NSURL URLWithString:url_string];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                         cachePolicy:NSURLRequestReloadIgnoringCacheData 
                                     timeoutInterval:30];

//To create an object in rails
//We have to use a post request
////This is the format when using xml
NSString *requestString = [[NSString alloc] initWithFormat:@"<player><team_game_id>%@</team_game_id><person_id>%@</person_id></player>", game, person];


NSData *requestData = [NSData dataWithBytes:[requestString UTF8String] length:[requestString length]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:requestData];
NSString *postLength = [NSString stringWithFormat:@"%d", [requestData length]];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];

//For some reason rails will not take application/xml
[request setValue:@"application/xml" forHTTPHeaderField:@"content-type"];

取得リクエストは次のとおりです。

NSString *url_string = [NSString stringWithFormat:@"https://testserver.example.com/people/find_by_passport?passport=%i", passport];
passportString = [[NSMutableString alloc] initWithFormat:@"%i", passport];
NSLog(@"The passport string is %@", passportString);

NSLog(url_string, nil);
NSURL *url = [NSURL URLWithString:url_string];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                         cachePolicy:NSURLRequestReloadIgnoringCacheData 
                                     timeoutInterval:30];

私はここで何が起こっているのかを見つけようとしているので、どんな助けも大歓迎です。

4

1 に答える 1

0

同じ問題に直面しました。Set-Cookie ヘッダーの応答ヘッダーを解析し、手動で Cookie を抽出し、Cookie:後続の要求でヘッダーとして返します。

これが最も単純なセッションに関するものであれば、永続性、HTTPS、ドメイン/パスなどについて心配する必要はありません。

編集: クラス NSHTTPCookieStorage が見つかりました。それが役立つかどうかを確認してください...

于 2011-07-21T15:42:00.270 に答える