我需要将JSON集成到PHP中,更具体地说,我需要从我们网站上的php页面发布一些信息来发起API请求,然后再向我发送信息。我发送的信息围绕登录信息,我正在努力弄清楚如何发送这些信息。
这是我需要发布的信息:
POST /user/?action=login HTTP/1.1
Host: api.interlinkexpress.com
Content-Type: application/json
Accept: application/json
Authorization: Basic RFNNSVRIOk1ZUEFTU1dE
GEOClient: account/123456
Content-Length: 0
阅读主题我已经看到php cURL可能有用但是我的例子并没有包含我需要传递的所有信息。此外,我不确定是否需要通过按钮传递它:
$data = array("username" => "TESTAPI", "password" => "APITEST");
$data_string = json_encode($data);
$ch = curl_init('http://api.interlinkexpress.com');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
任何有关此事的帮助将不胜感激。我是JSON的新手,只是稍稍了解它。
编辑:我想我要问的主要问题是如何将这些信息传递给PHP中的API?
POST /user/?action=login HTTP/1.1
Host: api.interlinkexpress.com
Content-Type: application/json
Accept: application/json
Authorization: Basic RFNNSVRIOk1ZUEFTU1dE (this is the login credentials)
GEOClient: account/123456
Content-Length: 0
答案 0 :(得分:2)
如果您想要更强大的功能,可以使用Guzzle以更好的方式集成cURL。
我不明白通过按钮传递它是什么意思。您是在谈论PHP还是HTML / Javasript? 如果你想要一个按钮,你可以继续执行一个通过Javascript执行XMLHttpRequest的按钮,调用API(应该返回 application / json Content-Type),然后通过Javascript处理这个结果。 / p>
或者您可以使用cURL调用API,获取结果json_decode
并使用它做您想做的事。
你应该更好地解释你想要完成的事情。
<强> [编辑] 强>
好的,在澄清之后我可以告诉你,你必须将API的参数从HTTP调用的设置划分为API(正如你已经做过的那样^^)。
因此,使API执行某些操作的参数是
而所有其他人都设置了HTTP客户端( cURL 或 Guzzle ),它们将执行对API的URL的调用
所以,这不是完整的,也没有经过测试,但是应该为你提供一条添加
的途径 $data = array("action" => "login");
$data_string = json_encode($data);
$ch = curl_init(sprintf('%s/%s', 'http://api.interlinkexpress.com', 'user/');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string)),
'GEOClient: account/123456',
);
// I would suggest you to add the timeout
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); // or set it to CURLAUTH_BASIC
curl_setopt($ch, CURLOPT_USERPWD, sprintf('%s:%s', $data['username'],$data['password']));
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //get status code
$result = curl_exec($ch);
老实说,我不知道你应该在哪里发送JSON编码数据。
这样你就可以将'action'作为JSON数据发送,但我猜这是错误的。
也许你想传递$data_string
作为特定字段的值? (如 PHP开发者中所述的示例?)
开展此工作,并准确了解您必须传递哪些数据作为JSON,而不是什么。
我希望能帮助你并给出好的建议。
答案 1 :(得分:1)
您的$ data_string的格式不是(field = value)。 没有什么可以把数组传递给POST。
curl_setopt($ ch,CURLOPT_POSTFIELDS,array('Data'=&gt; $ data_string));