我对 GET 请求有一个严重的问题......
出于某种原因,当我设置一个 NSString 是需要传递给 HTTP 请求的标头的授权令牌时,显然没有传递授权字符串。现在,每次我向 Web 服务器发出特定请求以获取令牌以向 Web 服务器发出更多请求时,都会创建此授权令牌。
因此,通过一些调试,我获取了其中一个授权令牌并将 NSString 初始化为我收到的令牌,使字符串成为那个令牌的静态字符串。然后,当我使用该特定令牌发出发布请求时,一切都很好..
但是当我使用由我发出的请求初始化的 NSString 时,标头不接受 NSSString ..
对不起我的措辞......但这是我的代码:
NSLog(@"%@", setAuthenticaionKey);
NSString *authKey = [[NSString alloc] initWithFormat:@"ClientLogin auth=%@", setAuthenticaionKey];
NSLog(@"%@", authKey);
setAuthenticaionKey = @"4Pm/WijuHdJP02PcVEWOEBk+aPfB0hH+APtKgtorR/xHE3VDDenLCXVEsbi3SeLFFQHbQ7v9vP4zoAzylM9ie0FOiJq41O8i3mV9Vta/f5+Nelgegb4OoQ==";
authKey = [[NSString alloc] initWithFormat:@"ClientLogin auth=%@", setAuthenticaionKey];
NSLog(@"%@", authKey);
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"https://insight.fatspaniel.net/platform/rest/v1/user.json"]];
[request setHTTPMethod:@"GET"];
[request setValue:authKey forHTTPHeaderField:@"Authorization"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
NSError *error;
NSURLResponse *response;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *str = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(@"%@", str);
所以这行得通,我回来了:
2013-07-15 16:29:47.221 PowerOneApp[7257:c07] {"user":{"userId":"settingj","firstName":"John","lastName":"Setting","email":"jsetting32@yahoo.com","siteListEid":1129945}}
但是当我拿出这条线时......
setAuthenticaionKey = @"4Pm/WijuHdJP02PcVEWOEBk+aPfB0hH+APtKgtorR/xHE3VDDenLCXVEsbi3SeLFFQHbQ7v9vP4zoAzylM9ie0FOiJq41O8i3mV9Vta/f5+Nelgegb4OoQ=="; // the static nsstring
我得到了这个:
2013-07-15 16:31:00.160 PowerOneApp[7282:c07] {"unexpectedException":{"reason":"E-AZNInject-azn.1-","message":"No Authorization header. ","code":"REQUEST_INVALID"}}
现在我将静态令牌与不断重新分配给setAuthenticationKey
字符串变量的动态令牌进行比较,并将它们比较为:
2013-07-15 16:31:41.931 PowerOneApp[7300:c07] ClientLogin auth=jqsWR0RLoolfBNFwWAUM0W7NHSLs67i4h3xblbDDlfNHE3VDDenLCXVEsbi3SeLFFQHbQ7v9vP4zoAzylM9ie0FOiJq41O8ij8/zTwyBOpswf8czwtNuWg==
2013-07-15 16:31:41.931 PowerOneApp[7300:c07] ClientLogin auth=4Pm/WijuHdJP02PcVEWOEBk+aPfB0hH+APtKgtorR/xHE3VDDenLCXVEsbi3SeLFFQHbQ7v9vP4zoAzylM9ie0FOiJq41O8i3mV9Vta/f5+Nelgegb4OoQ==
请注意,它们的长度相同,并且以相同的“==”结尾。我还使用 WireShark 检查是否正确发布了标头,但是当我使用静态令牌时,所有内容都会被发布,当我不使用静态令牌时,没有任何内容发布到授权令牌 HTTPheaderfield 的该字段。此外,我在设置任何标头之前记录令牌字符串,实际上我得到了一个完整的令牌字符串,所以它只是因为一些奇怪的原因而没有发布......