【问题标题】:php curl api call fails with a 413php curl api调用失败,出现413
【发布时间】:2023-03-10 19:37:01
【问题描述】:

已经玩了一段时间了,它是一个连接api的功能,un / pw和url绝对正确。

但是它一直失败并出现 413 错误代码,我理解这意味着到服务器的数据流太大,但我要做的只是连接而不发送任何东西。

有什么建议吗?谢谢

function call_api () {

    $username = "***api un here***";
    $password = "***api pw here***";

    $url = "http://api.domain.com";

    $api_connect = curl_init(); 
    curl_setopt($api_connect, CURLOPT_URL, $url);   
    curl_setopt($api_connect, CURLOPT_USERPWD, "$username:$password");
    curl_setopt($api_connect, CURLOPT_CONNECTTIMEOUT, 30); 
    curl_setopt($api_connect, CURLOPT_TIMEOUT, 30); 
    curl_setopt($api_connect, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($api_connect, CURLOPT_POST, true); 
    curl_setopt($api_connect, CURLOPT_HEADER, 1); 

    $result = curl_exec($api_connect);
    $err = curl_error($api_connect);  

    if( curl_errno($api_connect) )
    {   
        $result = 'ERROR -> ' . curl_errno($api_connect) . ': ' . curl_error($api_connect);
    }
    else 
    {   
        $returnCode = (int)curl_getinfo($api_connect, CURLINFO_HTTP_CODE);              
        switch($returnCode)
        {      
            case 200: 
                 $result = 'HAVE CONNECTION -> ' . $returnCode; 
                 break;    
            default:     
                 $result = 'HTTP ERROR -> ' . $returnCode;        
                 break; 
        }
    }  

    curl_close($api_connect);
    echo $result;

}

更新

添加到这里

curl_errno($api_connect) 返回 0

curl_error($api_connect) 返回空字符串

print_r(curl_getinfo($api_connect) 返回以下内容

Array
(
    [url] => https://api.domain.com
    [content_type] => text/html; charset=iso-8859-1
    [http_code] => 413
    [header_size] => 197
    [request_size] => 218
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.065667
    [namelookup_time] => 0.001792
    [connect_time] => 0.010429
    [pretransfer_time] => 0.056323
    [size_upload] => 0
    [size_download] => 408
    [speed_download] => 6213
    [speed_upload] => 0
    [download_content_length] => -1
    [upload_content_length] => -1
    [starttransfer_time] => 0.065638
    [redirect_time] => 0
    [certinfo] => Array
        (
        )

    [redirect_url] => 
)

【问题讨论】:

  • en.wikipedia.org/wiki/… -- 413 Request Entity Too Large
  • 服务器是用那个代码来表示这个意思,还是用它发送另一条消息?
  • 停止用你乱七八糟的错误消息覆盖$result,它可能有一个描述性错误消息与413一起去。
  • 谢谢@Orbling 我现在用更多的调试信息更新了我的问题。不幸的是,似乎没有更多有用的信息
  • 尝试转储响应头,而不是让 curl 处理它们。

标签: php api rest authentication http-status-code-413


【解决方案1】:

尝试将请求内容显式设置为零:

curl_setopt($api_connect, CURLOPT_POSTFIELDS, ''); 

当我遇到同样的麻烦时它帮助了我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-27
    • 2014-04-07
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2014-01-30
    相关资源
    最近更新 更多