2010-10-12 17 views
2

J'essaie de demander les informations Basecamp de mon entreprise pour un projet interne que nous sommes en train de construire. Je comprends comment ajouter des informations d'identification dans un environnement ASP.NET, mais je suis nouveau dans le développement de l'iPad et ne semble pas pouvoir obtenir une réponse appropriée de Basecamp. Voici ce que je fais:Comment définir les informations d'identification Basecamp en utilisant Apple IOS pour iPad

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

J'ajoute les en-têtes HTTP qui Bsaecamp nécessite comme ceci:

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

Je sais que je dois aussi envoyer mes lettres de créance à des fins d'authentification - mon jeton d'authentification et tout mot de passe que j'aime mais je ne suis pas sûr de la meilleure façon de le faire. Voici ce que je suis en train d'essayer:

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

Ma question est la suivante: suis-je sur la bonne voie ici ou est-ce que quelque chose me manque?

est ici un lien vers les détails de l'API Basecamp qui explique ce dont il a besoin: http://developer.37signals.com/basecamp/

Aide appréciée.

Joe

Répondre

5

Comme c'est toujours le cas, je l'ai finalement trouvé. Une fois que j'ai commencé à utiliser la méthode didReceiveAuthenticationChallenge, les choses ont commencé à se mettre en place.

Donc. J'ai simplifié ma méthode de demande:

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

    } 

puis mis en place une méthode pour recevoir le défi d'authentification:

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

} 

puis mis en place une méthode didReceiveData pour attraper les données retournées:

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

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

J'espère que cela aidera quelqu'un d'autre.

Toujours heureux d'entendre meilleure méthode pour cette

JJ