2014-02-15 3 views
1

У меня есть метод, в котором я вызов API и возвращает строку, как этогоNSURL всегда нуль

 -(NSString *)urlReturn{ 

      NSURL *aUrl = [NSURL URLWithString:@"http://deluxecms.net/dev/api/index.php"]; 
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:aUrl 
     cachePolicy:NSURLRequestUseProtocolCachePolicy 
                timeoutInterval:60.0]; 
      [request setHTTPMethod:@"POST"]; 
      NSString *postString = @"method=getDocument& 
     deviceId=cdad86b3d8bca5c09885af94990eda193c40ab03& 
     cipher=803ae952ff4a785588397362860d045e& 
     version=1&lastSync=0"; 
     NSLog(@"postString %@",postString); 
     [request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]]; 

     NSHTTPURLResponse* urlResponse = nil; 
     NSError *error = [[NSError alloc] init]; 
     NSData *responseData = [NSURLConnection sendSynchronousRequest:request 
     returningResponse:&urlResponse error:&error]; 

    if(error.domain!=nil) 
    { 
     NSString *errorDesc=[[error userInfo] objectForKey:@"NSLocalizedDescription"]; 
     NSLog(@"Response Error === %@",errorDesc); 
     return nil; 
    } 

     GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:responseData 
                 options:0 error:&error]; 
    if (doc == nil) { 
     return nil; 
    } 

     NSArray *partyMembers = [doc nodesForXPath:@"//assets/asset[11]/file" error:nil]; 
     NSLog(@"ASSTES %@",partyMembers); 
     NSString *urlStringmine; 
     GDataXMLElement *urlElement = (GDataXMLElement *)[partyMembers objectAtIndex:0]; 
     urlStringmine = urlElement.stringValue; 
     NSLog(@"MY URL STRING %@",urlString); 

     return urlStringmine; 
    } 


    - (void)viewDidLoad 
    { 
    [super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
    urlString = [self urlReturn]; 
     NSURL *urlPattern = [[NSURL alloc]initWithString:urlString]; 
     UIImage *image = [UIImage imageWithData: [NSData 
     dataWithContentsOfURL:urlPattern]]; 
    NSLog(@"Imge %@",urlPattern); 
    [self.imageView setImage:image]; 
    } 

затем в методе viewDidLoad я делаю URL из этой строки и, наконец, создание образа
из этого URL, как этот

, но когда я печать urlString я получить точное значение, как этот http://deluxecms.net/dev/resource/document/Shop/Deluxe screenshot.JPG но когда я печать URLPATTERN это всегда нуль.

Я не могу понять поведение? , пожалуйста, помогите мне.

ответ

2

Try строку бежать перед использованием этого:

urlString = [[self urlReturn] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
+0

он работает как шарм. Спасибо за помощь. – nikk3008

0

Из NSURL док для initWithString:

объекта NSURL инициализирован с URLString. Если строка URL была malformed, возвращает nil.

Должно быть хорошей подсказкой, что URL-адрес испорчен. Замените это пространство на% 20, и он будет работать.

Короче говоря, сделать это:

NSString *urlString = @"http://deluxecms.net/dev/resource/document/Shop/Deluxe screenshot.JPG"; 
urlString = [urlString stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding]; 
NSURL *urlPattern = [NSURL URLWithString:urlString]; 
NSLog(@"%@", urlPattern); 
Смежные вопросы