创建url字符串时出现问题

时间:2011-06-01 08:46:39

标签: iphone xcode url nsurlconnection

    NSString *sttr=[[NSString alloc]init ];
    NSURL *jsonURL;
    NSString *strurl;

    sttr =@"|7 Harvard Drive, Plymouth, MA, 02360, |9121 SW 174th St., Miami, FL, 33157, |7 Harvard Drive, Plymouth, MA, 02360, |";
    NSLog(@"StringToSend=%@",sttr);
    strurl = [[NSString alloc]initWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&waypoints=optimize:true%@&sensor=false&mode=driving",sttr];

但是当我调试时,strurl总是为零。

这里的问题是由于位置名称中的空格。我如何处理这个问题。

提前致谢

4 个答案:

答案 0 :(得分:1)

您可以将字符串的组件分隔为单个字符串,然后将其传递给必要的url字符串。

试试这个,看它是否有效

NSURL *jsonURL;
NSString *strurl;
NSString *sourceString = @"|7 Harvard Drive, Plymouth, MA, 02360, |9121 SW 174th St.";
NSString *destString = @"Miami, FL, 33157, |7 Harvard Drive, Plymouth, MA, 02360, |";
strurl = [[NSString alloc]initWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@ |&waypoints=optimize:true%@&sensor=false&mode=driving",sourceString,destString,@" "];
NSLog(@"%@",strurl);

答案 1 :(得分:0)

从你的代码中,strurl不应该是nil。

顺便说一句:您有内存泄漏,因为@"some string"为您提供了一个自动释放的对象,而您在NSString *sttr=[[NSString alloc]init ];中保留的内存永远不会被释放。

答案 2 :(得分:0)

更改您的代码。

strurl = [[NSString alloc]initWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&waypoints=optimize:true%@&sensor=false&mode=driving",sttr,sttr,sttr];

答案 3 :(得分:0)

您应该使用相同数量的“%@”和您的传递更改代码的变量 -

strurl = [[NSString alloc]initWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&waypoints=optimize:true%@&sensor=false&mode=driving",sttr,destinationStr,anotherVar];

此外,我不知道为什么你在这里有“%@” -

waypoints=optimize:true%@&s

如果你从这个url中获取的内容可能是nil,你应该在创建NSURL之前对url字符串进行编码..使用此函数 -

-(NSString *) URLEncodeString:(NSString *) str
{

    NSMutableString *tempStr = [NSMutableString stringWithString:str];
    [tempStr replaceOccurrencesOfString:@" " withString:@"+" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [tempStr length])];


    return [[NSString stringWithFormat:@"%@",tempStr] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}