[英]Issue with GET http request in iOS
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都不會發布到該字段。 另外我在設置任何標頭之前記錄了令牌字符串,並且實際上返回了完整的令牌字符串,因此出於某種奇怪的原因而沒有發布...
問題解決了...
顯然,當我檢查兩個字符串的計數時,動態分配的令牌返回的計數為121,而靜態令牌返回的計數為120 ....
所以我用它來解決這個問題:
NSString *anotherNewString = [newStr substringToIndex:[newStr length] - 1];
因此,現在字符串返回120個字符,並且http請求現在將字符串識別為實際的標頭類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.