什么是通过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)

这就是我请求viaAFNetworking 的方式

   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:@"&lt;"];
    str = [str stringByReplacingOccurrencesOfString:@">" withString:@"&gt;"];
    return str;

【讨论】:

在我的网址中不能是空格。但是大多数地方都有%标签 我更新了问题。我试过你的答案。但没有得到成功的结果

以上是关于什么是通过iOS中的Web服务url传递带有xml标签的参数的更好方法,目标c的主要内容,如果未能解决你的问题,请参考以下文章

如何通过黄瓜选项通过带有黄瓜功能文件的命令行传递应用程序 URL?

ios Web 服务登录返回空的 xml 响应

springMvc通过url向后台传递带有#井号的参数处理

springMvc通过url向后台传递带有#井号的参数处理

springMvc通过url向后台传递带有#井号的参数处理

tms web core 通过URL 传递参数