objective C NSString stringwithformat of URL

时间:2011-05-30 13:32:17

标签: objective-c nsstring nsurlrequest

我需要我的应用程序向我的服务器发送HTTP请求,这是链接,但由于某种原因,当我创建一个NSString stringwithformat并不是所有字符串都被复制到字符串中时,

这是我的网址:

http://192.168.50.204:8080/webapi/originate?sofia/internal/408%25192.168.50.204%20'set:effective_caller_id_number=722772408,bridge:sofia/gateway/012smile/0545890183@212.199.220.21'%20inline%200545890183%200545890183

如果我把它放在我的浏览器中它运行正常。

这是代码:

self.feedURLString = [NSString stringWithFormat:@"http://192.168.50.204:8080/webapi/originate?sofia/internal/%@%25192.168.50.204%20'set:effective_caller_id_number=722772%@,bridge:sofia/gateway/012smile/%@@212.199.220.21'%20inline%20%@%20%@",extention,extention,PhoneNumber,PhoneNumber, PhoneNumber];

请记住,网址中有一些%20和%25,可能会导致问题......

我在NSLog中获得的字符串是:

  

feedURLString = http://192.168.50.204:8080/webapi/originate?sofia/internal/408220'set:effective_caller_id_number = 722772408,bridge:sofia /gateway/012smile/0545890183@212.199.220.21'93610576nline2 @ 2 @

3 个答案:

答案 0 :(得分:2)

从字符串中删除%20和%25 然后使用NSString

中的stringByAddingPercentEscapesUsingEncoding命令
string = [sURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

答案 1 :(得分:0)

你是对的,%20几乎肯定会引起问题。

字符串中您想要在结果中使用实际%符号的任何位置,您应该编写%%。

有些人使用的另一个选择是保留%s,但使用stringByReplacingOccurrencesOfString:withString:来进行替换。

例如:

NSString *str = @"http://{HOST}/{USER}/blah";
str = [str stringByReplacingOccurrencesOfString:"{HOST}" withString:hostname];
str = [str stringByReplacingOccurrencesOfString:"{USER}" withString:username];

答案 2 :(得分:0)

尝试使用普通字符而不是%20和%25编写网址,然后添加变量,当您拥有完整的网址字符串时

[feedURLString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEndocing];

编辑:抱歉双重,我想anwser很明显:)