【问题标题】:Trying to send a POST request using php, No matter what i do i get "HTTP ERROR 500"尝试使用 php 发送 POST 请求,无论我做什么,我都会收到“HTTP ERROR 500”
【发布时间】:2020-03-02 23:11:13
【问题描述】:

为了发出 HTTP 请求,有人建议我尝试使用 PHP,并给了我一段代码来处理:

$url = 'https://example.com/dashboard/api';
$data = array('to' => PHONE_NUMBER, 'from' => SENDER_ID, 'message' => TEXT, 'email' => EMAIL, 'api_secret' => SECRET, 'unicode' => BOOLEAN, 'id' => IDENTIFIER);

$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data)
    )
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { /* Handle error */ }

var_dump($result);

所以我获取了代码,编辑了我需要的字段,将其粘贴到 .php 文件中,上传到我的 Web 服务器(运行 PHP 5.6),然后在尝试运行 .php 文件时,我得到了HTTP 错误 500。

我完全是新手,我什至不确定我是否正确地做所有事情。

【问题讨论】:

  • 检查您的 PHP 错误日志以了解 500 错误的原因。
  • 你应该学会使用curl,它更容易使用,更灵活。
  • RFC2606 合规性、格式化、消除噪音

标签: php http web post


【解决方案1】:
      $url = 'https://domainname.com/dashboard/api';
      $params = array('to' => PHONE_NUMBER, 'from' => SENDER_ID, 'message' => TEXT, 'email' => EMAIL, 'api_secret' => SECRET, 'unicode' => BOOLEAN, 'id' => IDENTIFIER);      
      $query_content = http_build_query($params);
      $context = stream_context_create([
          'http' => [
              'header'  => [
                   'Content-type: application/x-www-form-urlencoded',
                   'Content-Length: ' . strlen($query_content)
              ],
          'method'  => 'POST',
          'content' => $query_content
        ]
      ]);
      $result = file_get_contents($url, false, $context);

【讨论】:

  • 它给了我“PHP 通知:使用未定义的常量 PHONE_NUMBER - 假定为“PHONE_NUMBER””,最后是 PHP 警告:file_get_contents(domainname.com/dashboard/api): failed to open stream: HTTP request失败的! HTTP/1.1 500 内部服务器错误 :(((
  • 您是否检查过您尝试访问的 URL 是否正常工作?要对此进行测试,您可以尝试 $_POST = $_GET;在文件的开头,并尝试使用 URL 参数
  • 另外,您是否将 PHONE NUMBER 替换为实际电话号码?即引号中的“01234567890”,所以它是一个字符串?其他变量也一样?
  • 或者您是否将 php 变量定义为 PHONE_NUMBER ?这似乎是一种奇怪的方式,但我不确定你是如何设置这些变量的
  • @hopwJan 在问题中你说你编辑了你需要编辑的字段。这应该意味着您定义了作为参数发送的所有常量。
【解决方案2】:
$url = 'https://domainname.com/dashboard/api';
$header = [
    'Content-type: application/x-www-form-urlencoded',
];
$params = array('to' => PHONE_NUMBER, 'from' => SENDER_ID, 'message' => TEXT, 'email' => EMAIL, 'api_secret' => SECRET, 'unicode' => BOOLEAN, 'id' => IDENTIFIER);
$c = curl_init();
curl_setopt($c, CURLOPT_URL,$url);
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, $params);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c, CURLOPT_HTTPHEADER, $header);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
$res = curl_exec($c);
var_dump($res);

【讨论】:

    猜你喜欢
    • 2020-10-08
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 2015-08-25
    • 2016-04-24
    • 2017-01-12
    相关资源
    最近更新 更多