簡體   English   中英

iOS中的GET http請求問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM