2012-05-14 22 views
0

我必須調用第三方webservice,它的參數字符串需要並且只接受非法字符(根據RFC),如下所示。使用帶有非法字符的URL的NSURLConnection

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

在這個例子中,括號是非法字符,並應進行編碼,但是如果這些字符已編碼此WebService不會接受的參數。

NSURL正確不允許我用URLWithString方法創建NSURL對象,使用類似示例的字符串返回nil。

Web服務由大型公司實體提供,所以更改它需要向他們提交一個錯誤報告,如果可能的話,可能會或可能不會立即採取行動,尤其是考慮到API的工作原理。

我的問題是什麼是這個問題的一些可能的解決方案,我可以實現,而無需更改Web服務。

當前的想法(缺點) 使用CFStream手藝自定義HTTP請求(驚人,大量的工作) 使用基於Web的代理,可以代表我的應用程序的發送請求(追加的外部依賴)

感謝

+1

出於好奇,web服務是否接受'http://example.com?param1 =%7Bfoo = bar%7D'。 –

回答

2

你試圖做的事情是不可能的。您需要對這些字符進行URL編碼,然後服務器將自動解碼它們。

如果你能以某種方式攻擊NSURL,整個過程中仍然會有很多部分會堵塞格式不正確的URL。