2015-12-18 2 views
0

У меня есть этот вызов RESTFUL API. Я пытаюсь установить соединение с веб-службой. Ответ успешно получен, но когда я выхожу из приема данных, он этого не сделал. Пожалуйста, помогите мне. Является ли мое сообщение для отдыха неправильным?IOS как получить данные из веб-службы с использованием RESTFUL API

Вот мое кодирование:

- (void)viewDidLoad { 
    [super viewDidLoad]; 


    // Do any additional setup after loading the view. 

    feeds = [[NSMutableArray alloc] init]; 

    NSString *restMessage = [NSString stringWithFormat:@"https://deepsightapi.symantec.com/v1/domains/www.google.com/"]; 



    NSURL *url = [NSURL URLWithString:restMessage]; 
    NSURLRequest *theRequest = [NSURLRequest requestWithURL:url]; 







    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 
    //[connection start]; 

    if(connection) 
    { 
     _webResponseData = [NSMutableData data] ; 


    } 
    else 
    { 
     NSLog(@"Connection is NULL"); 
    } 

} 
- (void)connection:(NSURLConnection *) connection didReceiveResponse:(NSURLResponse *)response 
{ 
    NSLog(@"Response recieved"); 
    [self.webResponseData setLength:0]; 
} 

- (void)connection:(NSURLConnection*) connection didReceiveData:(NSData *)data 
{ 
    NSLog(@"Data recieved"); 
    [self.webResponseData appendData:data]; 

} 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection { 

    NSLog(@"Received %lu Bytes", (unsigned long)[_webResponseData length]); 
    NSString *theXML = [[NSString alloc] initWithBytes: 
         [_webResponseData mutableBytes] length:[_webResponseData length] encoding:NSUTF8StringEncoding]; 

    NSLog(@"hello %@",theXML); 

    //now parsing the xml 

    NSData *myData = [theXML dataUsingEncoding:NSUTF8StringEncoding]; 

    NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:myData]; 

    //setting delegate of XML parser to self 
    xmlParser.delegate = self; 

    // Run the parser 
    @try{ 
     BOOL parsingResult = [xmlParser parse]; 
     NSLog(@"parsing result = %hhd",parsingResult); 
    } 
    @catch (NSException* exception) 
    { 
     UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"Server Error" message:[exception reason] delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     [alert show]; 
     return; 
    } 
} 
+1

Не могли бы вы опубликовать свои NSLogs? – Duc

ответ

0

Почему бы вам не использовать AFNetworking вместо этого? Вы можете легко манипулировать, если используете AFNetworking.

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
[manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; 
manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 

NSString *urlStr=[NSString stringWithFormat:@"%@companyinfo",BASE_URL]; 
[manager GET:urlStr parameters:nil 
    success:^(AFHTTPRequestOperation *operation, id responseObject) 
{ 
    NSString *jsonString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; 
    NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
    NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data 
                    options:kNilOptions 
                    error:nil]; 

    NSLog(@"jsonResponse %@", jsonResponse); 

} 

    failure: 
^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 

}]; 
+0

Он специально запросил решение, основанное на 'NSURLConnection', а не в сторонней библиотеке. Кроме того, данные не регистрируются, это нечто иное, чем использование сторонней библиотеки. – jbehrens94

1
NSURLSessionConfiguration *configurationSession = [NSURLSessionConfiguration defaultSessionConfiguration]; 
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration:configurationSession delegate:self delegateQueue:[NSOperationQueue mainQueue]]; 
NSMutableString *urlParams = [[NSMutableString alloc] init]; 
NSMutableString *mainUrl = [[NSMutableString alloc] initWithString:baseUrl]; 
if (dictParameter) { 
     for (NSString *key in dictParameter) { 
      if(urlParams.length){ 
       [urlParams appendString:@":"]; 
      } 
      NSString *value = [dictParameter objectForKey:key]; 
      [urlParams appendFormat:@"/%@",value]; 
     } 
    [mainUrl appendString:urlParams]; 
} 
NSLog(@"Main url %@",mainUrl); 
NSURLRequest *requestUrl = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:mainUrl]]; 

    NSURLSessionDataTask *dataTask = [defaultSession dataTaskWithRequest:requestUrl completionHandler:^(NSData * data, NSURLResponse * response, NSError * error) {  }]; 
    [dataTask resume]; 
2

Я использовал этот путь, вы можете превратить ваш ответ в словарь или массив. Пожалуйста, замените ваш код кодом, приведенным ниже.

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
     NSLog(@"Succeeded! Received %d bytes of data",[_webResponseData length]); 

     NSString *responseText = [[NSString alloc] initWithData:_webResponseData encoding: NSASCIIStringEncoding]; 
     NSLog(@"Response by server is : %@", responseText); 
     NSError *e; 

     // Convert into Array 
     NSMutableArray *object = [NSJSONSerialization JSONObjectWithData:_webResponseData options:NSJSONReadingMutableContainers error:&e]; 
NSLog(@"%@",object[0]); 
    // Print your field 

    // Convert into Dictionary 

NSMutableDictionary *objectDic = [NSJSONSerialization JSONObjectWithData:_webResponseData options:NSJSONReadingMutableContainers error:&e]; 
NSLog(@"%@",objectDic[@"your Key name"]); 

Пожалуйста, дайте мне знать Если это работает. Спасибо

 Смежные вопросы

  • Нет связанных вопросов^_^