我需要我的应用程序向我的服务器发送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];
编辑:很抱歉出现双重错误,我想答案很明显:)