Как установить учетные данные Basecamp с помощью Apple IOS для iPad

Я пытаюсь запросить информацию Basecamp моей компании для внутреннего проекта, который мы создаем. Я понимаю, как добавлять учетные данные в среде ASP.NET, но я новичок в разработке для iPad и не могу получить надлежащий ответ от Basecamp. Вот что я делаю:

NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://mybasecampname.basecamphq.com/projects.xml"]
                                             cachePolicy:NSURLRequestUseProtocolCachePolicy
                                          timeoutInterval:60.0 ];

Я добавляю заголовки HTTP, которые требуются для Bsaecamp, например:

[theRequest setValue:@"application/xml" forHTTPHeaderField:@"Content-Type" ];
    [theRequest setValue:@"application/xml" forHTTPHeaderField:@"Accept" ];

Я знаю, что мне также нужно отправить свои учетные данные для целей аутентификации - мой токен аутентификации и любой пароль, который мне нравится, но я не уверен, что это лучший способ сделать это. Вот что я пытаюсь:

NSURLCredential *credential = [NSURLCredential credentialWithUser:@"MY TOKEN HERE"
                                                             password:@"x"
                                                persistence:NSURLCredentialPersistenceForSession];

У меня вопрос: я на правильном пути или я что-то полностью упускаю?

Вот ссылка на подробные сведения об API Basecamp, в которой объясняется, что ему нужно: http://developer.37signals.com/basecamp/

Помощь приветствуется.

Джо


person Jimbo Jones    schedule 12.10.2010    source источник


Ответы (1)


Как это всегда бывает, в конце концов я разобрался. Как только я начал использовать метод didReceiveAuthenticationChallenge, все стало на свои места.

Так. Я упростил свой метод запроса:

- (void)startRequest
{
    NSURL *url = [NSURL URLWithString:@"http://mybasecampproject.basecamphq.com/projects.xml"];
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];

    // Start the connection request
    urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

    }

а затем настройте метод для получения запроса аутентификации:

- (void)connection:(NSURLConnection *)connection 
didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    NSLog(@"Authentication challenge..."); 

    NSURLCredential *cred = [[[NSURLCredential alloc] initWithUser:@"my basecamp token here" password:@"X"
                                                           persistence:NSURLCredentialPersistenceForSession] autorelease];
        [[challenge sender] useCredential:cred forAuthenticationChallenge:challenge];

}

затем настройте метод didReceiveData для перехвата возвращаемых данных:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    NSLog(@"Did receive data"); 

    NSString * strResult = [[NSString alloc] initWithData: data encoding:NSUTF8StringEncoding];
    NSLog(strResult);
}

Надеюсь, это поможет кому-то еще.

Все еще рад услышать лучший метод для этого

JJ

person Jimbo Jones    schedule 16.10.2010