2011-07-21 67 views
0

我有一个iPhone应用程序,我试图去谈谈一个轨道后端。我使用NSMutableURLRequest来回拉取数据。所有的调用都可以很好地处理GET请求,但是当我需要发布数据时,我的rails应用程序似乎无法找到会话。我已经为get和POST请求发布了下面的代码。NSMutableURLRequest丢失会话信息

这是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"]; 

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

我在我束手无策这里试图找出什么是继续下去,因此任何帮助,将不胜感激。

回答

0

面临同样的问题。解析Set-Cookie头的响应头,手工提取cookie,并在后续请求中将头传回给Cookie:头。

如果这只是最简单的会话,您不必担心持久性,HTTPS,域/路径等。

编辑:我发现类NSHTTPCookieStorage。看看它是否有帮助...

+0

所以我有点明白我想在这里做什么,但我觉得我错过了一些东西,我把Set-Cookie放到一个字符串中,存储在一个钥匙链项目中,在下一个请求中选择它并将其添加到http标头字段中。这就是我需要做的一切,通过“手工提取饼干”你做了什么? – drapergeek

+0

非常。另请参阅编辑。 –

+0

其实我找到了同样的东西,我尝试将cookie添加回头部,但它似乎没有帮助我。 – drapergeek