GET リクエストで深刻な問題が発生しています...
何らかの理由で、HTTP 要求のヘッダーに渡す必要がある認証トークンである NSString を設定すると、明らかに認証文字列が渡されません。これで、この認証トークンは、Web サーバーに特定の要求を行うたびに作成され、Web サーバーにさらに要求を行うためのトークンが返されます。
そこで、いくつかのデバッグを通じて、認証トークンの 1 つを取得し、受け取ったトークンに NSString を初期化し、文字列をその 1 つのトークンに対して静的にしました。次に、その特定のトークンを使用して投稿リクエストを行うと、すべて問題ありません..
しかし、私が作成したリクエストによって初期化された 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 のそのフィールドには何も投稿されません。また、ヘッダーが設定される前にトークン文字列をログに記録し、実際に完全なトークン文字列を取得するため、奇妙な理由で投稿していません...