我有一个我想发布数据的链接。
我正在使用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:@"+"];
}
答案 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];