【问题标题】:Problem with NSString and NSMutableURLRequestNSString 和 NSMutableURLRequest 的问题
【发布时间】:2009-05-07 00:07:29
【问题描述】:

我在向 NSMutableURlRequest 添加标头时遇到问题,问题是当我在“授权”下方添加标头时,它没有显示出来。但是,如果我用静态字符串 exp (@"asdadsadsadga") 替换下面的实例变量“auth”,则会显示“Authorization”标题。在这一点上我很迷茫。

NSURL *url = [NSURL URLWithString:@"https://www.google.com/analytics/feeds/accounts/default"];
NSMutableURLRequest *profileRequest = [NSMutableURLRequest requestWithURL:url];

NSLog(auth); //prints correctly
NSString *authString = [NSString stringWithFormat:@"GoogleLogin Auth=%@", auth];
[profileRequest addValue:authString forHTTPHeaderField:@"Authorization"];

NSDictionary *allheaders = [profileRequest allHTTPHeaderFields];

for (id key in allheaders)
{
  //Nothing prints
  NSLog(@"key: %@, value: %@", key, [allheaders objectForKey:key]);
}

NSLog(auth); //Prints correctly

【问题讨论】:

  • 这听起来与stackoverflow.com/questions/791760 相同的问题,这也是一个身份验证令牌(但不幸的是,那里没有对该问题的后续处理)。也许是一个特定的角色导致它失败;当您尝试使用字符串文字时,它与您的 auth 变量的内容是否相同?如果没有,我会尝试,如果失败,则开始删除字符,直到它起作用。
  • 是的,我已经尝试过与文字相同的确切标记。此外,authString 已正确创建,我可以运行 NSLog(@"%@", authString) 并获得正确的输出。这真的让我很难过。
  • 能否请您发布运行此代码的确切输出。

标签: iphone objective-c nsstring


【解决方案1】:

首先,将 NSLog(auth) 替换为 NSLog(@"%@", auth)。前者很危险,可能会暴露这里发生的一些事情。您还应该尽早尝试添加:

auth = @"asdasdasdad";

您还应该尝试直接转储所有标题:

NSLog(@"%@", [profileRequest allHTTPHeaderFields];

这可能会有所启发。我怀疑问题出在您的 auth 变量中,可能与内存管理有关,而不是在 NSMutableURLRequest 中。

【讨论】:

  • 虽然 NSLog 语句可能会崩溃/不正确,但 authString 的创建是安全的,因此很难看出这有什么关系。这也不是内存管理问题,因为根据示例代码,身份验证在不起作用的代码块末尾仍然有效。
  • 您的问题无法重现,因此“auth”的实际内容非常相关。
  • 实际上,我似乎已经复制了它。它必须与我们如何获取字符串有关。我正在使用我发现的一些代码对用户名/密码进行 base64Encode,显然它失败了。
【解决方案2】:

您用于生成 base64Encoded 字符串的代码已损坏。

尝试使用页面底部列出的方法: http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 2011-03-28
    • 1970-01-01
    • 2013-09-05
    • 2011-08-21
    • 2013-01-27
    • 1970-01-01
    相关资源
    最近更新 更多