0

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

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

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

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

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

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

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

谢谢

4

1 回答 1

2

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

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

于 2012-05-14T05:17:49.407 回答