2013-07-15 129 views
0

我有一个GET请求一个严重的问题HTTP GET请求......问题与iOS的

出于某种原因,当我设置一个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":"[email protected]","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

解决的问题......

显然,当我检查两个个体线的数量,动态分配的令牌返回的121计数,而静态令牌返回120 ....

所以我用这个来解决问题:

NSString *anotherNewString = [newStr substringToIndex:[newStr length] - 1]; 

所以现在,该字符串返回120个字符和http请求现在将字符串识别为实际的标题类型....