[英]Post JSON data to an API via PHP
我需要将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
如果你想要更强大的功能,你可以使用Guzzle以更好的方式集成cURL。
通过按钮传递它,我不明白你是什么意思。 您是在谈论PHP还是HTML / Javasript? 如果你想要一个按钮,你可以继续执行一个按钮,通过Javascript执行XMLHttpRequest,调用API(应该返回一个application / json Content-Type),然后通过Javascript处理这个结果。
或者您可以使用cURL来调用API,获取结果, json_decode
它并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,而不是什么。
我希望能帮助你并给出好的建议。
您的$ data_string的格式不是(field = value)。 没有什么可以将数组传递给POST。
curl_setopt($ ch,CURLOPT_POSTFIELDS,array('Data'=> $ data_string));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.