【问题标题】:How to get data from REST API in CI Conroller?如何从 CI 控制器中的 REST API 获取数据?
【发布时间】:2020-12-13 18:12:18
【问题描述】:

我有一个 API 源并想在我的控制器中处理它。

$user    = "myuser";
$pass    = "mypass";

$url     = "http://myurlforapi/StockSummary?userid='5'";
            
//$url   = "https://pokeapi.co/api/v2/pokemon/132/";        
    
    $opts    = array(
            'http'  => array(
                        'method'    => "GET",
                        'header'    => "Authorization: Basic " . base64_encode("$user:$pass")                 
      )
    );
    
    $context = stream_context_create($opts);
    
    // Open the file using the HTTP headers set above
    $data= file_get_contents($url, false, $context);
    
    print($data);

当我将 URL 更改为 pokeapi.co 时,会显示数据。但是,当我使用 myurlforapi 时,不会显示任何数据。我错过了什么吗?或者在我的域中需要做一些配置?

更新:

A PHP Error was encountered
Severity: Warning

Message: file_get_contents(http://myurlforapi/StockSummary?userid=5): failed to open stream: Connection refused

Filename: backend/Dashboard.php

Line Number: 51

Backtrace:

File: /home/u9354272/public_html/xxx/modules/dashboard/controllers/backend/Dashboard.php
Line: 51
Function: file_get_contents

File: /home/u9354272/public_html/xxx/index.php
Line: 339
Function: require_once

注意:当我使用 Postman 时,它可以工作。当我在我的虚拟主机中使用它时,它不起作用

【问题讨论】:

  • 可能是因为您的网址中的撇号?尝试用%27 替换它们,或者更好地更改你的api,这样它就可以在没有撇号的情况下接听电话,比如http://myurlforapi/StockSummary?userid=5
  • 不幸的是它不起作用
  • 如果您在浏览器中输入您的 API URL,您会得到什么?
  • 一些错误文本。因为用户需要有身份验证。我添加了一些错误响应。
  • 请查看最新更新

标签: php api rest codeigniter


【解决方案1】:

您没有将凭据正确传递给 base64 编码函数。改变这个

$opts    = array(
        'http'  => array(
                    'method'    => "GET",
                    'header'    => "Authorization: Basic " . base64_encode("$user:$pass")                 
  )
);

到这里

$opts    = array(
        'http'  => array(
                    'method'    => "GET",
                    'header'    => "Authorization: Basic " . base64_encode($user . ':' . $pass)                 
  )
);

【讨论】:

  • 感谢您的回答。但是,错误日志是一样的。我联系了 api 开发人员,他说没有请求发送到 http://myurlforapi
猜你喜欢
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 2019-10-19
  • 2016-11-24
  • 1970-01-01
  • 2017-12-24
相关资源
最近更新 更多