什么是通过iOS中的Web服务url传递带有xml标签的参数的更好方法,目标c
Posted
技术标签:
【中文标题】什么是通过iOS中的Web服务url传递带有xml标签的参数的更好方法,目标c【英文标题】:What is the better way to pass the parameter with xml tags via web service url in iOS, objective c 【发布时间】:2016-06-16 08:23:20 【问题描述】:我正在使用网络服务来获得价值。我正在通过 Web 服务 url 传递值。有一个包含 xml
标签的参数。我将该字符串作为下图。
然后我将值添加到url
,如下所示。
NSString *checkingbaseUrl = [NSString stringWithFormat:@"http://myson.ascentur.au/AUMobile.asmx/FlightBooking?Authkey=%@&Reqxml=%@&infovia=%@&totalpax=%@&totalfare=%@&flightsegmentcount=%@&from=%@&destination=%@&departuredate=%@&returndate=%@&airlinecode=%@&cabinclass=%@&cabinclasses=%@",authkey,requestXml,infovia, totalPax, totalfare,flightsegmentcount,from,destination,departuredate,returndate,airline,cabinclass,cabinClassess];
但响应是error
。
当我在浏览器中看到它显示此错误:
A potentially dangerous Request.QueryString value was detected from the client (Reqxml="<BPC9> <MSG_VERSION>...").
在我的应用程序中,它会返回一个跟随错误
Request failed: not found (404)
这就是我请求via
AFNetworking 的方式
NSString *checkingbaseUrl = [NSString stringWithFormat:@"http://myson.ascentur.au/AUMobile.asmx/FlightBooking?Authkey=%@&Reqxml=%@&infovia=%@&totalpax=%@&totalfare=%@&flightsegmentcount=%@&from=%@&destination=%@&departuredate=%@&returndate=%@&airlinecode=%@&cabinclass=%@&cabinclasses=%@",authkey,requestXml,infovia,totalPax,totalfare,flightsegmentcount,from,destination,departuredate,returndate,airline,cabinclass,cabinClassess];
NSString *basedUrl = [checkingbaseUrl stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];
AFHTTPSessionManager *bookingmanager = [AFHTTPSessionManager manager];
[bookingmanager GET:checkingbaseUrl parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)
NSString *responseS = (NSString *)responseObject;
NSLog(@"resoponseS : %@", responseS);
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)
NSLog(@"anurdh_caldera :%@", error.localizedDescription);
];
我想知道,这是传递requestXml
参数的正确方法吗(我不知道如何用这些特殊字符添加这个字符串)。
希望您对此有所帮助。
【问题讨论】:
是 POST 方法吗?如果是,您不应该将其放入 HTTPBody 吗?您在请求中使用什么对象? 不,这是GET
方法,我正在使用AFNetworking
与Web 服务进行通信
【参考方案1】:
使用以下方法替换括号后检查:
requestXml=[self replaceSpecialCharsFromString:requestXml];
-(NSString*)replaceSpecialCharsFromString:(NSString*)str
str = [str stringByReplacingOccurrencesOfString:@"&" withString:@"&"];
str = [str stringByReplacingOccurrencesOfString:@"<" withString:@"<"];
str = [str stringByReplacingOccurrencesOfString:@">" withString:@">"];
return str;
【讨论】:
在我的网址中不能是空格。但是大多数地方都有%
标签
我更新了问题。我试过你的答案。但没有得到成功的结果以上是关于什么是通过iOS中的Web服务url传递带有xml标签的参数的更好方法,目标c的主要内容,如果未能解决你的问题,请参考以下文章