好的,所以我读过的每个地方和我所谈过的每个人都说NSURLConnection在异步模式下使用时应该自动使用OSX的系统代理设置。
这就是我所做的:
结果:
这些都可以很好地从api.box.com获取数据,但是当提到我的代理的访问日志时....这些调用都不是通过代理进行的....只是直接。
我通过使用wireshark验证了这一点,我可以通过我的代码看到几乎所有来自我的Mac的连接,但不是通过我的代码来查看box.com。
我已经将缓存策略设置为不缓存在squid和NSURLMutableRequest上都没有用。
发生了什么事?我在某处或某处遗漏了一些明显愚蠢的东西吗?
感谢您能想到的任何帮助或想法。
感谢。
更新
所以关于http vs https的评论让我很好奇所以我尝试了一个随机的URL,它是http而不是https,它通过代理就好了!
然后我更好地关注了鱿鱼访问日志的内容,我看到一些证书请求被拒绝了:
1371072911.976 1 192.168.10.41 TCP_DENIED/407 3676 POST http://ocsp.digicert.com/ - HIER_NONE/- text/html
1371072911.991 1 192.168.10.41 TCP_DENIED/407 3641 GET http://crl3.digicert.com/ca3-g20.crl - HIER_NONE/- text/html
1371072912.101 1 192.168.10.41 TCP_DENIED/407 3641 GET http://crl3.digicert.com/ca3-g20.crl - HIER_NONE/- text/html
1371072912.199 1 192.168.10.41 TCP_DENIED/407 3641 GET http://crl4.digicert.com/ca3-g20.crl - HIER_NONE/- text/html
1371072912.209 1 192.168.10.41 TCP_DENIED/407 3641 GET http://crl4.digicert.com/ca3-g20.crl - HIER_NONE/- text/html
1371072912.219 1 192.168.10.41 TCP_DENIED/407 3729 GET http://crl3.digicert.com/DigiCertHighAssuranceEVRootCA.crl - HIER_NONE/- text/html
1371072912.230 1 192.168.10.41 TCP_DENIED/407 3729 GET http://crl3.digicert.com/DigiCertHighAssuranceEVRootCA.crl - HIER_NONE/- text/html
1371072912.240 1 192.168.10.41 TCP_DENIED/407 3729 GET http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl - HIER_NONE/- text/html
1371072912.347 1 192.168.10.41 TCP_DENIED/407 3729 GET http://crl4.digicert.com/DigiCertHighAssuranceEVRootCA.crl - HIER_NONE/- text/html
所以也许当我尝试连接到https://api.box.com时,它无法连接到证书或其他东西?也许这实际上是一个https / squid问题而不是NSURLConnection。
答案 0 :(得分:1)
所以这个问题实际上似乎是一个https与http问题。
我试图通过代理发送https请求,但代理只是设置为http代理。
解决方案?在代理设置中使用https代理;)