我有一個奇怪的問題。所以我一直在用戶可以登錄的iphone應用程序上工作,登錄後,應用程序會通過向服務器發出http GET請求來授權用戶。如果用戶名和密碼正確,它會返回授權令牌(典型的東西)。爲什麼我的iPhone應用程序無法連接到我的服務器?
奇怪的是,當我在本地測試這個,指向我的本地機器的http請求url,它工作正常。一切正常授權,所有數據正確返回。
但今天,我得到的應用足夠穩定,我決定部署休息api到我的服務器,但是當http請求url更改爲我的服務器url時,請求失敗。
我想也許服務器沒有正確部署,所以我測試了與Firefox的休息客戶端的http端點和一切似乎工作,授權作品,並返回數據。
有沒有人有任何想法?我失去了什麼問題可能。
我正在使用AFNetworking庫來提出請求。
這裏是我的代碼:
self.apiHttpClient = [[TKRHttpClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://mywebsite.com/api"]];
--------------
NSString *username = [usernameField text];
NSString *password = [passwordField text];
TKRHttpClient *httpClient = [TKRHttpClient sharedInstance];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"GET" path:@"/user/auth" parameters:nil];
[request addValue:username forHTTPHeaderField:@"username"];
[request addValue:password forHTTPHeaderField:@"password"];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
if(response.statusCode == 200){
NSDictionary * headers = [response allHeaderFields];
NSString *token = [headers objectForKey:@"auth_token"];
NSLog(@"token was %@", token);
[[AppController sharedAppController] initializeDataForUserToken:token];
}else{
NSLog(@"upload failed!");
}
} failure:^(NSURLRequest *request , NSHTTPURLResponse *response , NSError *error , id JSON) {
NSLog(@"code was: %i", response.statusCode);
if(response.statusCode == 401){
[errorMessage setText:@"Incorrect password or username"];
}
}];
[operation start];
我把破發點,似乎該請求,可直接到達不良區。 「NSLog(@」代碼是:%i「,response.statusCode);」在失敗塊打印出200.但是當我尾巴我的服務器上的日誌,沒有收到請求。
任何幫助將不勝感激。不知道爲什麼它會對我的本地tomcat有效,但在部署到我的服務器時無法工作。
在此先感謝!
數據包嗅探連接,或通過像Fiddler這樣的代理運行手機,並查看發生了什麼。 – Brad
如果我正確讀取您的代碼,則您將不帶(https)加密的用戶名和密碼作爲GET參數發送。這意味着任何嗅探連接的人都可以竊取用戶的憑據 – TheRealKingK
輝煌的布拉德!爲什麼我沒有想到這一點..我完全按照你所說的做了,但是用了查爾斯。我發現了這個問題。我會發布答案。再次感謝布拉德。 @TheRealKingK好眼睛。我現在只是在原型階段。我打算很快拿到ssl證書。 – Khon