2014-02-15 75 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

尝试转义字符串:

因此,在短期,做到这一点

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

它就像一个魅力。谢谢您的帮助。 – nikk3008

0

NSURL文档为initWithString:

与URLString初始化的NSURL对象。如果URL字符串为 格式不正确,则返回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);