iOS7中的url编码问题

时间:2013-11-06 10:00:21

标签: ios encoding

我有一个我想发布数据的链接。

我正在使用url编码,

http://admin:testsite@www.arabcircleonline.com/index.php?%@=%@",form_urlencode_rfc3986(@"do"),form_urlencode_rfc3986(@"/webservice/whisper/login_chauhankevalp@gmail.com/password_keval/action_whisper/whisperdata_{\"user_status\":\"last123\",\"privacy\":0,\"privacy_comment\":0}

这是在应该添加记录时给出的响应,但是没有添加记录,当我在浏览器上执行此链接时,它工作正常。 请帮助我解决这个问题..我正在努力工作这最后2天没有解决方案

form_urlencode_rfc3986我使用的方法是,

NSString* form_urlencode_rfc3986(NSString* s) {

CFStringRef charactersToLeaveUnescaped = CFSTR(" ");

CFStringRef legalURLCharactersToBeEscaped = CFSTR("/%&=?$#+-~@<>|\\*,.()[]{}^!");
NSString *result = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(    kCFAllocatorDefault,(__bridge CFStringRef)s,charactersToLeaveUnescaped,legalURLCharactersToBeEscaped,          kCFStringEncodingUTF8));

return [result stringByReplacingOccurrencesOfString:@" " withString:@"+"];

}

1 个答案:

答案 0 :(得分:0)

您可能正在尝试这样做:

您有一个包含查询的网址。查询组件由"?"分隔,如下所示:

URL :=   scheme-authority-path "?" query

在您的情况下,“scheme-authority-path”是

http://admin:testsite@www.arabcircleonline.com/index.php

和“查询”是参数列表,以"&"分隔。

您没有查询的网址字符串(方案,权限和路径):

NSString* urlString = @"http://admin:testsite@www.arabcircleonline.com/index.php";

撰写参数(它是查询的一部分),例如在BNF

parameter := name "=" value

注意: name value 需要使用辅助函数进行编码。

代码对应:

NSString* parameterString = [NSString stringWithFormat:@"%@=%@",
    form_urlencode_rfc3986(@"do"),
    form_urlencode_rfc3986(            
    @"/webservice/whisper/login_chauhankevalp@gmail.com/password_keval/action_whisper/whisperdata_{\"user_status\":\"last123\",\"privacy\":0,\"privacy_comment\":0")
   ]; 

查询字符串是通过连接(编码)参数并用"&"分隔它们组成的,例如query := parameter ["&" parameter] 。在BNF:

NSString* queryString = parameterString;

您只有一个参数,因此我们的查询字符串只是参数字符串:

"?"

现在,通过连接 urlString ,{来自前urlString(方案,权限和路径)和查询,编写完整的 url字符串(包括查询) {1}}和查询。例如:

NSString* urlStringWithQuery = [NSString stringWithFormat:@"%@?%@", urlString, queryString];