【问题标题】:PHP HTTP 500 trying to make GET request from an apiPHP HTTP 500 试图从 api 发出 GET 请求
【发布时间】:2026-01-19 03:25:01
【问题描述】:

我正在尝试向 API 发出 GET 请求,但它给了我一个 500 Http 错误。

我在https://reqbin.com/ 上尝试了同样的事情,并且没有任何错误

我的代码有什么问题?

我的代码:

$addr = $_GET['addr'];
$api_key = 'secure';
$url = 'https://www.blockonomics.co/api/merchant_order/'.$addr;
$options = array(
    'http' => array(
        'header'  => "Authorization: Bearer $api_key",
    )
);

$context = stream_context_create($options);
$contents = file_get_contents($url, false, $context);
$object = json_decode($contents);

【问题讨论】:

  • 我不建议使用 file_get_contents 从 URL 获取数据。大多数服务器通常会阻止 URL 访问。相反,请查看更强大的 cURL
  • @aynber 已经尝试过了,但它给了我同样的错误
  • A 500 错误是一种通用错误消息,几乎涵盖了 PHP 脚本可能出错的每一件事。检查您的服务器错误日志以找出确切的错误消息。
  • @aynber 所以我的代码没问题吧?
  • 没有明显的错误,但这并不意味着没有错误。查看服务器错误日志以获取更多信息。

标签: php api get request blockchain


【解决方案1】:

您可以使用此代码来捕获任何错误消息:

<?php
$addr = $_GET['addr'];;
$api_key = 'your_api_key';
$url = 'https://www.blockonomics.co/api/merchant_order/'.$addr;
$options = array (
    'http' => array (
    'header' => "Authorization: Bearer $api_key",
    'ignore_errors' => true
  )
);

$context = stream_context_create($options);
$contents = file_get_contents($url, false, $context);
$object = json_decode($contents);

if($object->status != 200) {
  echo $http_response_header[0]."\n".$contents;
}

这样你会看到错误信息告诉你哪里出了问题:

HTTP/1.1 500 内部服务器错误

{"status": 500, "message": "订单未找到。"}

【讨论】: