【问题标题】:Using NSURLConnection with URL's with illegal characters使用带有非法字符的 URL 的 NSURLConnection
【发布时间】:2012-05-21 13:15:18
【问题描述】:

我必须调用第三方 web 服务,它期望并且只接受其参数字符串中的非法字符(根据 RFC),如下所示。

http://example.com?param1={foo=bar}

在这个例子中,大括号是非法字符,应该被编码,但是如果这些字符已经被编码,这个 web 服务将不接受参数。

NSURL 正确地不允许我使用 URLWithString 方法创建 NSURL 对象,使用示例中的字符串返回 nil。

Web 服务由大型企业实体提供,因此更改它需要向他们提交错误报告,这可能会或可能不会很快采取行动,如果有的话,尤其是考虑到 API 是按原样工作的。

我的问题是这个问题有哪些可能的解决方案,我可以在不更改 Web 服务的情况下实施。

当前的想法(缺点) 使用 CFStream 制作自定义 HTTP 请求(工作量非常大) 使用可以代表我的应用程序发送请求的基于 Web 的代理(额外的外部依赖项)

谢谢

【问题讨论】:

  • 只是出于好奇,网络服务是否接受http://example.com?param1=%7Bfoo=bar%7D

标签: ios url nsurlconnection nsurl afnetworking


【解决方案1】:

您尝试做的事情是不可能的。您需要对这些字符进行 URL 编码,然后服务器会自动对其进行解码。

如果你能以某种方式破解 NSURL,那么整个过程中仍有许多部分会因格式错误的 URL 而窒息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    相关资源
    最近更新 更多