2013-07-15 61 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請求現在將字符串識別爲實際的標題類型....