2014-01-06 1 views
0

Я пытаюсь вызвать веб-сервис поиска drupal, но когда я его вызываю, он говорит, что запрос имеет значение NULL.NSString считается null при преобразовании в URL-адрес

Я поместил некоторый журнал в свой код и увидел, что NSString хорош, но когда я определяю свой NSURL, NSString рассматривается как null ... Может кто-нибудь объяснить мне, в чем проблема, пожалуйста?

Ниже мой код:

- (void)FindProductsByKeyword:(NSString *)keyword :(void(^)(NSArray *produits))success 
{ 
    __block NSArray *produits = [[NSArray alloc]init]; 

    NSString *fullUrl = [NSString stringWithFormat:@"%@%@?filter[title]=\%%%@\%%&filter_op[title]=LIKE", WEBSERVICES_URL, PRODUCT_DISPLAY_URL, keyword]; 
    NSLog(@"Appel de : %@", fullUrl); 
    NSURL *URLFormatted = [NSURL URLWithString:fullUrl]; 
    NSLog(@"Appel de : %@", URLFormatted); 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:fullUrl]]; 
    NSLog(@"Appel de : %@", request); 

    [request setHTTPShouldHandleCookies:NO]; 

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler: 
    ^(NSURLResponse * response, NSData * data, NSError * error) 
    { 
     NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse*)response; 
     NSLog(@"status code : %d", httpResponse.statusCode); 
     if(httpResponse.statusCode == 200) { 
      NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 
      produits = [[WebservicesService getInstance]ExtractListProduct:jsonData]; 
      NSLog(@"Il y a %d résultats pour la recherche", produits.count); 
     } 
     success(produits); 
    }]; 
} 

Это то, что мой журнал шоу:

2014-01-03 17:03:51.852 mcommerce_ipad[8649:a0b] Appel de : http://domain-name.com/rest/product-display.json?filter[title]=%test%&filter_op[title]=LIKE 

2014-01-03 17:03:51.852 mcommerce_ipad[8649:a0b] Appel de : (null) 

2014-01-03 17:03:51.853 mcommerce_ipad[8649:a0b] Appel de : <NSMutableURLRequest: 0x8a3c9c0> { URL: (null) } 

2014-01-03 17:03:51.895 mcommerce_ipad[8649:a0b] status code : 0 

Наконец, что поджигатель возвращение, когда я пытаюсь непосредственно мой NSString.

200 OK 

17 Object { vid="17", uid="0", title="Ethylotest chimique à usage unique", more...} 

139 Object { vid="139", uid="16", title="Produit de test", more...} 

142 Object { vid="142", uid="16", title="Test surface", more...} 

Это показывает, что запрос является правильным и должен вернуть то, что проблема исходит от конвертации из NSString в NSURL, но я не могу найти его ... Так что пожалуйста мои спасители!

+0

Попробуйте избежать специальных символов с: [NSURL URLWithString: [fullUrl stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; –

+0

Спасибо, что делают работу отлично! Я никогда не писал этот тип запроса раньше и теперь благодаря вам, я смогу сделать это правильно. – neobagram

+0

Возможный дубликат [+ \ [NSURL URLWithString: \] возвращает нуль] (http://stackoverflow.com/questions/20219394/nsurl-urlwithstring-returning-nil) –

ответ

1

Как я уже сказал в своем комментарии, вам нужно избежать специальных символов, или URLWithString вернет значение null.

Для этого используйте:

[NSURL URLWithString:[fullUrl stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; 
+0

thx alot, очень полезно –

1

Перед преобразованием URL в URL-адрес необходимо кодировать раздел параметров строки. Он работает в браузере, потому что браузер делает это для вас перед отправкой запроса.

В частности, вам необходимо изменить символ %.

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

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