2011-07-21 15 views
0

私はレールバックエンドと対話しようとしているiphoneアプリを持っています。 NSMutableURLRequestを使用してデータを前後にプルします。すべての呼び出しはGETリクエストで正常に動作しますが、データをポストする必要があるときには、私のレールアプリはセッションを見つけることができません。私はgetとPOSTリクエストの両方のために以下のコードを投稿しました。NSMutableURLRequestがセッション情報を失う

//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"]; 

get要求は次のとおりです:ので、任意の助けをいただければ幸いで起こっていただきました!

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]; 

私は私の知恵で午前見つけるためにしようとここで終わり

これは、POSTリクエストがあります。

答えて

0

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

最も簡単なセッションの場合は、永続性、HTTPS、ドメイン/パスなどを心配する必要はありません。

EDIT:クラスNSHTTPCookieStorageが見つかりました。それが助けになることができるかどうかを見てください...

+0

私はここでやろうとしていることを幾分理解していますが、何かが欠けているような気がします。セットクッキーを引き出してキーチェーン項目で、次のリクエストでそれを選択し、httpヘッダーフィールドに追加しました。これは私がする必要があるのですか?「手でクッキーを取り出す」とはどういう意味ですか? – drapergeek

+0

かなり。また、編集を参照してください。 –

+0

実際に私は同じことを見つけ、そのヘッダーにクッキーを戻そうとしましたが、それは私を助けてくれないようです。 – drapergeek

関連する問題