【问题标题】:How NOT to display cURL response data in php?如何不在 php 中显示 cURL 响应数据?
【发布时间】:2020-04-16 10:37:00
【问题描述】:

我有以下代码对 URL 进行 API 调用。响应采用json 格式。 收到响应数据后,我想使用另一个函数进一步处理数据,NOT 在控制台中显示数据(我只想显示最终处理的输出)。但目前,来自 API 调用的响应与最终处理的输出一起显示在控制台中。

处理后的最终数据将保存在$processedData变量中。

<?php

function getDataFromApi(){
    $url = 'https://www.myurl.com/data.json';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

function processData($data){
    /**
     * Do the processing and save processed data in $processedData variable.
     */

    // Finally display the data
    echo $processedData;
}

$result = getDataFromApi();
processData($result);

我如何显示中间 cURL 响应而只显示最终响应?

【问题讨论】:

    标签: php json api curl


    【解决方案1】:

    您正在传递数据变量但回显过程数据变量

    function getDataFromApi(){
       $url = 'https://www.myurl.com/data.json';
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_URL, $url);
       $result = curl_exec($ch);
       curl_close($ch);
       $processdata = processData($data);
       return $processdata;
    }
    
    
    function processData($data){
      /**
       * Do the processing
       */
    
      // Finally display the data
      echo $data;
    }
    echo $getDataFromApi();
    

    【讨论】:

    • 处理后的最终数据将保存在 $processedData 变量中。我已经对问题进行了编辑。但是,初始(未处理的)响应仍然显示在控制台中。此解决方案对此没有任何作用!
    • 好吧,您的意思是您正在对数据进行一些更改,然后显示过程数据?
    • 是的。 仅显示处理后的数据,不显示原始数据。
    • 请查看更新的答案,我认为您需要这样做。因为目前您正在同时调用这两个函数。
    • 如果问题解决了,请标记为答案
    【解决方案2】:

    在下面使用

    function processData($data){
      /** * Do the processing */ 
      // Finally display the data echo $data; 
    }
    

    【讨论】:

    • 添加 $data 而不是 $processedData 变量。
    【解决方案3】:

    我自己找到了我的问题的答案,所以我将其发布在这里,以便帮助其他人。

    我的代码如问题中所述,默认情况下执行 curl 请求并在屏幕上打印输出。

    在当前表单中,$result = curl_exec($ch); 行将执行 cURL 请求,并根据请求是否成功返回 truefalse。因此,$result 变量将 保存响应数据(与我之前假设 的情况相反),而是 truefalse

    为了显示响应并将其保存在变量中(并将其传递给另一个函数),CURLOPT_RETURNTRANSFER选项需要设置为@987654328 @如下:

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    此行指示 cURL 将响应作为字符串返回,而不是将其输出到屏幕。

    最终代码如下:

    <?php
    
    function getDataFromApi(){
        $url = 'https://www.myurl.com/data.json';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }
    
    function processData($data){
        /**
         * Do the processing and save processed data in $processedData variable.
         */
    
        // Finally display the data
        echo $processedData;
    }
    
    $result = getDataFromApi();
    processData($result);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      • 2021-01-09
      • 1970-01-01
      相关资源
      最近更新 更多