目标C使用URL格式的NSString字符串



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

这是我的URL:

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/<PHONENUMBER>@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];

请记住,URL中有一些%20和%25,可能是它导致了问题。。。

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

feedURLString=http://192.168.50.204:8080/webapi/originate?sofia/internal/408220'集合:effective_caller_id_number=722772408,桥接器:sofia/gateway/012smile/0545890183@212.199.220.21'93610576nline2@2@

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

string = [sURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

你是对的,%20几乎肯定会造成问题。

字符串中的任何位置如果希望结果中有一个实际的%符号,则应该写入%%。

有些人使用的另一个选项是保持%s原样,但使用字符串ByReplacingOccurrencesOfString:withString:执行子初始化。

例如:

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

试着用普通字符而不是%20和%25编写url,然后添加变量,当你有完整的url字符串时,使用

[feedURLString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEndocing];

编辑:很抱歉出现双重错误,我想答案很明显:)

最新更新