使用简单PHP代理的跨域getJson请求

时间:2012-05-20 16:38:01

标签: php json proxy jsonp cross-domain-proxy

您好我试图从api获取数据,只返回JSON而不是JSONP。每次我尝试将数据连接为JSONP时,它都不起作用,因为我不期待JSON。所以,我想我必须使用PHP代理来解决跨域问题,以便我可以解释JSON请求。 [简单的PHP代理] [1]是我试图使用的,但我有一段时间试图让最基本的功能工作。当我输入我想在示例页面上查询他的示例的URL时,它可以工作。当我这样做时,它没有,有时我会得到一个" Missing Command" (API的方式告诉我有太多或者太少的争论)或者httpcode / jsoncode 404。

Expensify是我要查询的API。我是第一次尝试Authenticate命令。如果您在浏览器中键入此URL,则会得到我想要的结果:     https://api.expensify.com?command=Authenticate&partnerName=applicant&partnerPassword=d7c3119c6cdab02d68d9&partnerUserID=expensifytest%40mailinator.com&partnerUserSecret=hire_me

使用Simple PHP Proxy我的请求URL原来是:     http://people.rit.edu/~cjs6948/exp/ba-simple-proxy.php?url=https://api.expensify.com?command=Authenticate&partnerName=applicant&partnerPassword=d7c3119c6cdab02d68d9&partnerUserID=expensifytest%40mailinator.com&partnerUserSecret=hire_me

这是我非常简单的jQuery代码:

var proxy = 'ba-simple-proxy.php';
url = proxy + '?' + "url=" + "https://api.expensify.com?    command=Authenticate&partnerName=applicant&partnerPassword=d7c3119c6cdab02d68d9&partnerUserID=expensifytest%40mailinator.com&partnerUserSecret=hire_me";
$.getJSON( url, function(data){});

" BA-简单proxy.php"可以找到[这里] [3]。有没有人有尝试通过代理连接到跨域API的经验?也许甚至这一个?有更好的想法吗?感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

您需要对URL进行编码,因为参数“partnerName”将传递给您的ba-simple-proxy.php脚本,而不是api.expensify.com网站。我相信你正在寻找的功能是: 是encodeURI(URI)