通过PHP将JSON数据发布到API
我需要将JSON集成到PHP中,更具体地说,我需要在我们网站的PHP页面上发布一些信息,以启动一个API请求,然后将信息发送给我。我发送的信息围绕着登录信息,我正在努力找出如何发送这些信息 这是我需要发布的信息:通过PHP将JSON数据发布到API,php,json,api,curl,Php,Json,Api,Curl,我需要将JSON集成到PHP中,更具体地说,我需要在我们网站的PHP页面上发布一些信息,以启动一个API请求,然后将信息发送给我。我发送的信息围绕着登录信息,我正在努力找出如何发送这些信息 这是我需要发布的信息: POST /user/?action=login HTTP/1.1 Host: api.interlinkexpress.com Content-Type: application/json Accept: application/json Authorization: Basic R
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
如果你想要更强大的东西,你可以用一种更好的方式集成cURL 我不明白你通过按钮传递它到底是什么意思。你说的是PHP还是HTML/Javasript? 如果需要一个按钮,可以使用一个通过Javascript执行XMLHttpRequest的按钮,调用API(该API应返回应用程序/json内容类型),然后通过Javascript处理该结果 或者,您可以使用cURL调用API,获得结果,
json\u解码它
你应该更好地解释你想完成什么
[编辑]
好的,在澄清之后,我可以告诉您,您必须将API的参数与对API的HTTP调用的设置分开(正如您已经做的那样^^)
因此,将使API执行某些操作的参数是
- 操作=登录
- 方法=POST
- 主机=api.interlinkexpress.com
- 路径=/user/
- 接受=应用程序/json
- 内容类型=应用程序/json
- 授权=基本
- GEOClient=account/123456(这是API需要的特定标题吗?)
- 内容长度=0
$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编码的数据发送到哪里。
通过这种方式,您将“操作”作为JSON数据发送,但我猜这是错误的。
也许您想将$data\u字符串
作为特定字段的值传递?(如PHP Developer中所述的示例?)
在这方面下功夫,准确地理解哪些数据必须作为JSON传递,哪些不能
我希望能为您提供帮助并提出好的建议。您的$data\u字符串的格式不是(field=value)。 无需做什么,只需将数组传递到POST
curl_setopt($ch,CURLOPT_POSTFIELDS,array('Data'=>$Data_string)) 对不起,我没解释清楚。基本上,我们这边会有人点击一个按钮,它就会启动php页面,这样它就可以运行了。我是否需要通过按钮传递信息,或者信息可以通过仅在php页面上传递?如果必须传递的信息插入到按钮所在的调用页面中,则需要一些Javascript来收集这些信息并将其发送到API(在API的正确参数forma中)。或者,如果您有一个表单,您可以设置调用PHP页面的操作,通过方法POST或GET发送其字段。我不知道你的PHP页面是API还是API是你无法控制的。如果您需要使用按钮调用API,或者必须首先从PHP页面传递(然后使用cURL/Guzzle调用API),PHP页面包含API,但是它还包含更新系统某些部分的其他函数。我相信我可以在PHP页面上调用API,因为它将位于顶部。我想最简单的解释方法基本上是如何使用PHP:POST/user/?action=login HTTP/1.1 Host:API.interlinkexpress.com Content Type:application/json Accept:application/json Authorization:Basic RFNNSVRIOk1ZUEFTU1dE将此信息传递给APIGEOClient:account/123456 Content Length:0通常,API提供了调用它的接口,您不需要了解它的内部实现。因此,从按钮调用API是一回事。然后,如何在PHP页面中执行内部API函数是另一回事。如果我在本例中理解得很好,那么API就是PHP页面(您调用的主机[API.interlinkexpress.com/user/],带有您想要的服务的参数[action=login])。您担心什么?安全?您可以通过cURL、file_get_contents或fsockopen发送/获取,具体取决于服务器支持的内容。主要考虑的是安全性我知道我们的服务器支持cURL和file_get_contents