0

我正在编写一个 iPad 应用程序,我需要能够从另一个供应商设置的服务器中获取数据。该应用程序通过 REST 服务使用数据来工作。到目前为止,由于供应商还没有准备好,我一直在公司的本地网络上使用测试服务器。但是,现在随着供应商服务器上线,我在使用他们的 API 时遇到了问题。

问题似乎与登录有关(或至少从那里开始)。我过去使用的过程是:

// Create the request.
NSString* loginURL = @"http://aurl/signature/service/auth/rest/firewall/login";
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:loginURL]];
[request setHTTPMethod:@"POST"];

// {"userName":"foo2@bossmonkey.com" , "password":"password"}
NSString* credentials = @"userName=\"foo2@bossmonkey.com\"&password=password";

NSData* connectionData = [credentials dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:connectionData];

// Logging in...
NSError* error = nil;
NSURLResponse* response;
NSData* result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

NSDictionary* loginJsonResult = [NSJSONSerialization JSONObjectWithData:result
                                                                options:NSJSONReadingMutableContainers
                                                                  error:&error];

if (loginJsonResult != nil)
{
    NSString *loginApproved = [[loginJsonResult objectForKey:@"result"] description];

    if (![loginApproved isEqualToString:@"success"])
    {
        // login unsuccessful, bail
        NSLog(@"Login failed!\n");
        return;
    }

    NSLog(@"Login success!\n");
}

在我的测试服务器上,这可以正常工作,因为它会发回我可以解析的响应。但是,根据供应商,他们的服务器会做出不同的响应:

The LTPA token is in the response header Set-Cookie, the LTPA cookie name-value needs to be set as the request cookie in the subsequent Rest calls.

这对我来说意味着我将使用他们提供的 cookie 来进行未来的身份验证。我的印象是,这是由 NSURLConnection 开箱即用的。但是,对服务器的后续查询给了我一个零响应。我应该以某种特殊的方式处理 cookie 数据吗?

4

0 回答 0