使用PHP访问API

时间:2016-02-22 19:54:31

标签: php json api curl

我试图从API访问Json数据。在线进行研究但无法找到合适的资源来获取指导。我的文档建议执行以下操作,但我应该使用什么方法来使用PHP提取此数据。这是我到目前为止所做的。

offset

我得到一个"长度要求的HTTP错误411.请求必须分块或具有内容长度。"错误。

我尝试过使用curl_setopt($ ch,CURLOPT_GET,1);但后来它直接转到了网址。

我已经尝试使用GET,仍然会收到错误或端点错误。

https://.../v1/StoreServices.svc/Json/Items/

有什么建议吗?

文档建议将此用于身份验证标头:

<?php

$header = array();
    $header[] = 'Content-type: application/json';

    $header[] = 'Authorization: Basic '.base64_encode('MY_TOKEN_HERE'); 

    $url = "https://.../v1/StoreServices.svc";

    $ch = curl_init();


            curl_setopt($ch, CURLOPT_URL, $url);
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
                curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);


    $response = curl_exec($ch);
    //echo curl_error($ch);

  if ($response === false){
      echo "Failed";
      throw new Exception(curl_error($ch), curl_errno($ch));
  }
    print_r($response); 
?>

示例通话:

var token = "MY_TOKEN_HERE"; $.ajax ({… beforeSend: function (xhr) {   xhr.setRequestHeader("Authorization", "Basic " + btoa(token)); }, …);

1 个答案:

答案 0 :(得分:1)

看起来后端要求您发送内容长度标头。为此你需要添加:

$header[] = 'Content-Length: 0';