我想创建一个使用Telegram API发送图像的功能(参考API:https://github.com/mgp25/Telegram-Bot-API/),但是当我尝试运行它时,我总是会收到这样的错误:
消息:file_get_contents(''):无法打开流:HTTP请求失败! HTTP / 1.1 400错误请求
这是我的代码[已更新]:
<?php
require 'Telegram.php';
$tele = new telegramBot('token');
//$info = $tele->sendMessage('218945828',"wadaw");
$url= 'image/maldini.jpg';
$info = $tele->sendPhoto('chatid',$url);
print_r($info);
?>
错误:
警告:file_get_contents(https://api.telegram.org/bot_token/sendPhoto?chat_id=chat_id&photo=0):无法打开流:php_network_getaddresses:getaddrinfo failed:没有这样的主机已知。在第465行的C:\ xampp \ htdocs \ mgp25 \ Telegram-Bot-API-master \ src \ Telegram.php
我的代码出了什么问题?
答案 0 :(得分:2)
您是否与电报有SSL连接?如果您没有与电报的SSL连接,则非电报命令将无法工作,但如果您只发送一条简单的消息,则不存在SSL问题。
毕竟如果除了图像之外一切正常,请使用此cURL代码,除非使用准备使用telegramBOT
类。
如果这不起作用(cURL),那么在服务器上读取或查找照片确实存在问题(真实服务器或xampp文件夹等等......)
如果是服务器(主机),必须先上传,如果是xampp,则必须在true文件夹中。最好测试图像是否可访问(例如通过webbrowser中的http://localhost/image/maldini.jpg?
cURL准备使用代码发送照片:
$BOT_TOKEN='1231325:AbXDECcvhir7'; //----YOUR BOT TOKEN
$chat_id=123456 // or '123456' ------Receiver chat id
define('BOTAPI','https://api.telegram.org/bot' . $BOT_TOKEN .'/');
$cfile = new CURLFile(realpath('image/maldini.jpg'), 'image/jpg', 'maldini.jpg'); //first parameter is YOUR IMAGE path
$data = [
'chat_id' => $chat_id ,
'photo' => $cfile
];
$ch = curl_init(BOTAPI.'sendPhoto');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);
答案 1 :(得分:0)
我认为urlencode('http://127.0.0.1/mgp25/maldini.jpg');是问题。您应该使用您的提供商/公共IP地址。或者使用相对路径。