首页 > 解决方案 > 我需要调用一个在 Windows 中工作但不在 linux 中工作的 API,我收到 401 错误

问题描述

以下代码在我的 Windows 机器上运行,但相同的代码在我的服务器上不起作用。我的服务器平台是Linux。

我得到的错误是:

状态码:401 结果:HTTP/1.1 401 未经授权

我的代码:

    <?php
    try {
    $username = 'mXXXX';
    $password = 'SyXXX';
    $URL = 'http://svt-srv-nav.synovergetech.com:7047/DynamicsNAV90/WS/SMCSPL/Page/Customer';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $URL);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
    $result = curl_exec($ch);

    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);   //get status code
    curl_close($ch);
    //var_dump($result);
    $obj = simplexml_load_string($result);
    echo "<pre>";
    print_r($obj);
    echo "</pre>";
    }catch (Exception $e) {
        echo $e->getMessage();
    }

标签: phplinuxapacherestsoap

解决方案


linux服务器中启用的授权尝试添加正确的用户名和密码

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, "myusername:mypassword");

推荐阅读