0

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

我正在使用 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}

这是在应添加记录时给出预期的响应,但未添加记录,当我在浏览器上执行此链接时,它工作正常。请帮我解决这个问题..我最近两天正在努力解决这个问题

我正在使用的 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:@"+"];

}
4

1 回答 1

0

您可能正在尝试这样做:

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

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

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

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

“查询”是参数列表,由 . 分隔"&"

您没有查询的 URL 字符串(方案、权限和路径):

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

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

parameter := 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")
   ]; 

查询字符串由连接(编码)参数并用 a 分隔它们组成"&",例如在 BNF 中:

query  := parameter ["&" parameter] 

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

NSString* queryString = parameterString;

现在,通过连接urlString、 a和查询,从以前的 urlString(方案、权限和路径)和查询组成完整的 url 字符串(包括查询) 。例如:"?"

NSString* urlStringWithQuery = [NSString stringWithFormat:@"%@?%@", urlString, queryString];
于 2013-11-06T10:50:57.270 回答