【问题标题】:NSURL returning nilNSURL 返回零
【发布时间】:2016-11-24 17:11:53
【问题描述】:

我不知道为什么,但是当我调用以下 URL 时 它给了我错误的请求 - 无效的 URL,尽管这个 URL 在 safari 浏览器和其他浏览器上也可以正常工作

http://www.ysl.com/wx/shop-product/women/top-handles#{"ytosQuery":"true","department":"handbags_tophandle_w","gender":"D","brand":"","macro":"","micro":"","season":"A,P,E","color":"","size":"","site":"","section":"","sortRule":"","yurirulename":"searchwithdepartment","microcolor":"","agerange":"","macroMarchio":"","page":"2","productsPerPage":"50","modelnames":"","look":"","washtype":"","fabric":"","prints":"","suggestion":"false","suggestionValue":"","material":"","occasion":"","weight":"","gal

我正在使用以下代码:

NSString *str = [NSString stringWithFormat:@"%@",[payload stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]];

NSString* webStringURL = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

webStringURL = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL *payload = [NSURL URLWithString:webStringURL];

有帮助吗?我做错了什么?

【问题讨论】:

  • { 在 URL 中是不合法的。实际上是 JSON 吗?

标签: ios nsurl


【解决方案1】:

不要在漏洞 URL 上使用 stringByReplacingPercentEscapesUsingEncoding:,而只是在 GET 参数上使用。

现在http:// 也将被转义,从而变为http%3A%2F%2F,它作为 URL 无效。

【讨论】:

  • 如果你看到了,我也在整个 URL 中再次添加 percentescape。
  • 你不应该,关于参数应该转义。
  • 您根本不应该使用其中任何一种方法。第一个删除转义序列(但没有任何转义序列),第二个尝试将它们重新添加到任何地方。 Apple 开发者网站上的developer.apple.com/library/ios/documentation/Cocoa/Conceptual/… 描述了对 URL 数据进行编码的正确方法。您还需要 (__bridge CFStringRef) 您的 NSStrings 和 (__bridge_transfer NSString *) 它们在返回 ARC 的途中。
猜你喜欢
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 2015-04-05
  • 1970-01-01
相关资源
最近更新 更多