2015-04-04 64 views
0

我有下面的代碼,由於某種原因,我得到一個無響應時,它執行。我已經手動嘗試了瀏覽器中的鏈接並打印JSON數據。我知道有些事情我做錯了,但我一直無法發現它。我錯過了什麼?RESTful HTTP GET not response is null iOS

 NSString *strUrl = [NSString stringWithFormat:@"https://localhost/getData?usersesh=%@&dev=%@&lat=%f&long=%f", sessionId, deviceName, coordLat, coordLong]; 

     NSString *strFormattedUrl = [strUrl stringByAddingPercentEscapesUsingEncoding:NSStringEncodingConversionAllowLossy]; 
     NSURL *url=[[NSURL alloc]initWithString:strFormattedUrl]; 

     NSLog(@"url: %@",strFormattedUrl); 

     NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
     [request setURL:url]; 
     [request setHTTPMethod:@"GET"]; 
     //[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
     [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
     [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
     //[request setHTTPBody:postData]; 

     //[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]]; 

     NSError *error = [[NSError alloc] init]; 
     NSHTTPURLResponse *response; 
     NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
     NSLog(@"response: %@",response); 
     NSLog(@"%@",strUrl); 


     if ([response statusCode] >= 200 && [response statusCode] < 300) 
     { 
      NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding]; 
      NSLog(@"Response ==> %@", responseData); 

      NSError *error = nil; 
      NSMutableDictionary *jsonData = [NSJSONSerialization 
              JSONObjectWithData:urlData 
              options:NSJSONReadingMutableContainers 
              error:&error]; 

      didReturnError = [jsonData[@"ERROR"] integerValue]; 
      if(!didReturnError){ 
       NSMutableDictionary *respBody = [jsonData objectForKey:@"RESPONSE_BODY"]; 
       eventCount = [respBody[@"EVENTS"] count]; 

...

+0

其實本地主機的URL?然後你在哪裏運行它? – Wain 2015-04-04 15:28:30

+0

不,我只是把它扔在那裏,以便不透露實際的URL。我在一個單獨的網絡上運行它。 POST請求我做得很好。我正在做我的GET請求錯誤。 – joshdeco 2015-04-04 15:41:12

+0

最好讓你明白你做出那樣的改變,否則你會得到錯誤的答案。什麼是響應和錯誤? – Wain 2015-04-04 15:43:42

回答

0

解決的辦法是重新啓動的iOS模擬器它已經失去了互聯網連接tivity。

0

請更換下面的一行:

NSString *strFormattedUrl = [strUrl stringByAddingPercentEscapesUsingEncoding:NSStringEncodingConversionAllowLossy];

與此:

NSString *strFormattedUrl = [strUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];