只是访问一般的http页面的话,可以通过file、、系列函数实现,个人觉得比较好用的类有 class及dede自带的 class,都比较好用。可当需要访问https的内容时,这些函数及类就无能为力了,采用ssl导致协议的变化不是这么简单就能搞定的。
在未深入探究的情况下,要访问https的内容,采用php的扩展curl是最好的办法了。如果服务器不支持这个扩展,可能真没有什么好的办法了。
不过即使采用了curl进行访问,相比平常情况也有几点需要注意的:
这里要特别注意两个值:
($ch, ER, false);
($ch, ST, false);
一定要设置这两个值为false,这是关闭ssl的相关验证。不设置的话,表现为访问https的内容,没有任何反馈结果,甚至连也不会得到。当然如果为了防止伪造需要验证的话,可以使用下面的配置:
($ch, ER, true);
($ch,,’/api/pay/boc/.pem’);
其中.pem可以到获取,这样就可以验证服务器的真实性了。
顺便再提一点,可能https协议这块都没有问题了,可是还是无法获取正确的结果,对方服务器返回值不正确。如果你也遇到这个情况,尝试使用对post的数据进行编码,很有可能就解决问题了。我在开发中就遇到了这样的问题,怎么检查也找不到原因。最后通过抓包发现我采用curl post的结果和浏览器的结果部分特殊字符不一样,采用编码后解决。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...