iPhone: Wie man Basic-Authentifizierung, HTTPS-Web-Service Mit NSURLCredential
Bin ich versucht, rufen Sie eine https-web-service (RESTful) mit basic-Authentifizierung.
Es funktioniert gut, wenn ich die Anmeldeinformationen in die url selbst, aber ich würde eher fügen Sie es zu der Anfrage, so dass das Kennwort nicht angezeigt wird, zum Beispiel in eine Ausnahme.
Ich bin mit dem folgenden code:
NSURLCredential *credential = [NSURLCredential credentialWithUser:@"myuser"
password:@"mypassword"
persistence:NSURLCredentialPersistenceForSession];
NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc]
initWithHost:@"example.com"
port:443
protocol:@"https"
realm:nil
authenticationMethod:NSURLAuthenticationMethodHTTPBasic];
[[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:credential
forProtectionSpace:protectionSpace];
NSURLConnection *theConnection = [NSURLConnection connectionWithRequest:theRequest delegate:self];
aber es funktioniert nicht. Die didReceiveAuthenticationChallenge
delegate-Methode wird aufgerufen, und ich kann hinzufügen, eine Berechtigung gibt, aber idealerweise würde ich senden Sie es mit der Anfrage.
Irgendwelche Ideen?
InformationsquelleAutor Ian1971 | 2010-02-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verschicken Sie die Anmeldeinformationen in den header, wenn es die Standardauthentifizierung. Funktioniert für mich jedes mal.
Für das senden von Benutzername und Passwort in den header der Anforderung
In Ihrem Antrag fügen Sie eine Kopfzeile mit den Feldnamen Genehmigung und Wert
"Basic " + finalAuth
Gibt er Ihnen einen Fehler? Sind Sie sicher, dass der Fehler aufgrund fehlender Authentifizierung Herausforderung?
Dieser arbeitete für mich, seltsam, es gibt keine Erwähnung von ihm in den Apple-docs. Auch ich musste die Rolle meiner eigenen Base64-Codierung, die ist schrecklich.
Was ist der
base64 of authString
Teil?InformationsquelleAutor lostInTransit
Verpasste ich die Letzte Zeile des Codes, wo Sie mit NSURLConnection. Stellen Sie sicher, dass Ihre Delegierten reagiert :
Und Rückkehr ist JA für Ihre protectionSpace.
Stellen Sie außerdem sicher, dass Ihre Delegierten reagiert :
Weisen Sie hier die Anmeldeinformationen, die Sie, erstellt um die
NSURLAuthenticationChallenge
im proposedCredential Eigenschaft, sowie IhreNSURLProtectionSpace
Instanz in der protectionSpace Eigenschaft desNSURLAuthenticationChallenge
.Ich würde nicht denken, dass ein round-trip. So oder so, die Verbindung wird in Frage gestellt werden und es müssen die Anmeldeinformationen.
InformationsquelleAutor benasher44