我没有得到以下网址的响应我正在加载异步。
http://ms:ms@www.arabcircleonline.com/index.php?do=/webservice/whisper/login_ms@gmail.com/password_ms/action_stirwhisper/whisperstirdata_{"feed_id":"89","say_something":"pqrst","privacy":
0}
我正在使用像
这样的网址编码NSString *urlString1 = [[NSString alloc]initWithFormat:@"http://ms:ms@www.arabcircleonline.com/index.php?do=/webservice/whisper/login_ms@gmail.com/password_ms/action_stirwhisper/whisperstirdata_{\"feed_id\":\"%@\",\"say_something\":\"%@\",\"privacy\":%@}",feedid,[alertView textFieldAtIndex:0].text,privacy];
NSData *mydata1 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:[urlString1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
我认为编码存在一些问题。 帮助将不胜感激。
答案 0 :(得分:0)
您的查询组件需要“百分比转义”。此外,您的查询组件可能很特殊,因为它的结构是层次结构。也就是说,服务器需要实现自定义代码来处理这个问题。
服务器解码URL的查询组件的标准方法是使用为解码“application / x-www-form-urlencoded”请求的主体而定义的相同算法。客户端使用的相应编码算法在此处定义:
application/x-www-form-urlencoded encoding algorithm
(注意:查询组件是问号'?'
之后的所有内容,直到哈希字符'#'
!)
但是,根据RFC 3986,此编码算法可能会为URL的“未保留”字符集中的字符生成百分比转义,即波浪号〜字符。 “未保留”字符集中的字符不需要转义。更严格的是,由于URI比较实现的影响,RFC 3986提出了这个建议:
“为保持一致性,ALPHA(%41-%5A和%61-%7A),DIGIT(%30-%39),连字符(%2D),句号(%)范围内的百分比编码八位字节URI生成者不应创建%2E),下划线(%5F)或代字号(%7E)。
因此,略微修改的实施方案(不包括波形符'~'
)可以产生最佳结果。
以下代码对名称或参数的值进行编码。请注意,参数必须用'&'分隔,名称和值必须用'='分隔。
static NSString* form_urlencode_rfc3986(NSString* s) {
CFStringRef charactersToLeaveUnescaped = CFSTR(" ");
//CFStringRef legalURLCharactersToBeEscaped = CFSTR("!$&'()+,/:;=?@~");
// Modified for urls (excluding '~'):
CFStringRef legalURLCharactersToBeEscaped = CFSTR("!$&'()+,/:;=?@");
NSString *result = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(
kCFAllocatorDefault,
(__bridge CFStringRef)s,
charactersToLeaveUnescaped,
legalURLCharactersToBeEscaped,
kCFStringEncodingUTF8));
return [result stringByReplacingOccurrencesOfString:@" " withString:@"+"];
}
根据您的示例网址,查询组件包含一个参数:
参数名称:“do”
参数值:“/ webservice / whisper / login_ms @ gmail.com / password_ms / action_stirwhisper / whisperstirdata_ {”@“”“” >
编码的查询组件将如下所示:
do=%2Fwebservice%2Fwhisper%2Flogin_ms%40gmail.com%2Fpassword_ms%2Faction_stirwhisper%2Fwhisperstirdata_%7B%22feed_id%22%3A%2289%22%2C%22say_something%22%3A%22pqrst%22%2C%22privacy%22%3A0%7D