我遇到了GET请求的严重问题......
出于某种原因,当我设置一个NSString,它是一个需要传递给HTTP请求的标头的授权令牌时,授权字符串显然不会被传递。现在,每当我向Web服务器发出特定请求以获取令牌以向Web服务器发出更多请求时,就会创建此授权令牌。
因此,通过一些调试,我获取了一个授权令牌,并将NSString初始化为我收到的令牌,使字符串静态到那个令牌。然后,当我使用该SPECIFIC令牌发布帖子请求时,一切都很好..
但是当我使用由我发出的请求初始化的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的该字段。此外,我在设置任何标头之前记录标记字符串,然后我实际上得到一个完整的标记字符串,所以它只是因为一些奇怪的原因而没有发布...
答案 0 :(得分:0)
问题解决了......
显然,当我检查两个单独字符串的计数时,动态分配的令牌返回121的计数,而静态令牌返回120 ....
所以我用它来解决这个问题:
NSString *anotherNewString = [newStr substringToIndex:[newStr length] - 1];
现在,字符串返回120个字符,http请求现在将字符串识别为实际的标题类型....