gpt4 book ai didi

ios - 带有 HTTP 身份验证的 NSURLRequest

转载 作者:行者123 更新时间:2023-11-29 03:07:16 24 4
gpt4 key购买 nike

我正在尝试使用来自 iPhone 应用程序的 NSURLRequest 对 HTTP RESTful 站点进行身份验证。我将 user/pass 编码为 base64,并将其作为 NSURLRequest 中的“Authorization” header 传入,并附加了“Basic”一词。但是,我在另一端不断收到身份验证错误。这是我的代码。如果我执行手动 CURL 请求,它会起作用。我还检查以确保 Base64 编码正确并且用户、密码和 url 正确。

NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
NSString *basicAuthCredentials = [NSString stringWithFormat:@"%@:%@", user, pass];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", AFBase64EncodedStringFromString(basicAuthCredentials)];
authValue = [authValue stringByReplacingOccurrencesOfString:@"\n" withString:@""];
[urlRequest setValue:authValue forHTTPHeaderField:@"Authorization"];
[urlRequest setHTTPMethod: @"GET"];
NSData *httpData = [self encodeDictionary:data];
[urlRequest setHTTPBody:httpData];
NSHTTPURLResponse *response;
NSError *error;
NSData* result = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];

最佳答案

授权代码看起来不错。当然,stringByReplacingOccurrencesOfString是不必要的,但不会造成伤害。我可能会使用原生的base64方法(NSData方法base64EncodedDataWithOptionsbase64EncodedStringWithOptions在iOS 7中,base64Encoding在iOS 7之前的版本中)而不是AFNetworking的,但我认为这也不是问题。

假设您的用户名和密码正确,并且您的服务器确实正在使用基本身份验证(如果您的 cURL 成功,我认为这是正确的),这里唯一明显不正确的是对 setHTTPBody 的调用对于 GET要求。 NSURLConnection不会发送 GET 的正文请求(也不应该,因为正文在 GET 请求中在语义上没有意义)。如果你想发送带有body的请求,一般应该使用 POST .或者如果您想在 GET 中发送参数请求时,您可以将它们添加到 URL,但不能添加到正文。

关于ios - 带有 HTTP 身份验证的 NSURLRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22623407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com