通过PHP将JSON数据发布到API

迈基·巴克(Mikey Barker)

我需要将JSON集成到PHP中,更具体地说,我需要在我们网站的php页面上发布一些信息,以启动API请求,然后该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然后执行所需的操作。

您应该更好地解释您想要完成的工作。

[编辑]

好的,在澄清之后,我可以告诉您,必须将API的参数与对该API的HTTP调用的设置相除(就像您已经做过^^一样)。

因此,使API执行某些操作的参数是

  • 动作=登录

而其他所有设置均是HTTP客户端(cURLGuzzle)的设置,它将执行对API网址的调用

  • 方法=开机自检
  • 主持人= api.interlinkexpress.com
  • 路径= /用户/
  • 接受= application / json
  • 内容类型= application / 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_stringas作为特定字段的值传递(例如在PHP Develoer中所述的示例中?)

对此进行研究,并确切地了解您必须以JSON形式传递哪些数据,而不是什么。

希望对您有所帮助,并给您很好的建议。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章