电报请求“fopen failed to open stream:

我正在尝试向我的电报机器人发送消息。确切地说,名称变量不允许我这样做。


    $arr = array(

      $phoneFieldset => $phone,

      $nameFieldset => $name,

      $messageFieldset => $message,

    );

    foreach($arr as $key => $value) {

      $txt .= "<b>".$key."</b> ".$value."%0A";

    };

    

    $request = "https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}";

    

    echo $request;

    

    $sendToTelegram = fopen($request,"r");

当脚本失败时,请求回显输出:


https://api.telegram.org/botMYTOKEN/sendMessage?chat_id=-449128489&parse_mode=html&text=Телефон: 123%0AИмя: de%0AСообщение: 123213%0A

警告:fopen(https://api.telegram.org/botMYTOKEN/sendMessage?chat_id=-449128489&parse_mode=html&text=Телефон: 123%0AИмя: de%0AСообщение: 123213%0A): 无法打开流: HTTP 请求失败!HTTP/1.1 400 错误请求在 C:\nginx\html\scripts\php\send-message-to-telegram.php 上行 61 Ошибка.Сообщение не отправлено!


第 61 行是包含 .fopen()


当脚本工作时,请求回显输出:


https://api.telegram.org/botMYTOKEN/sendMessage?chat_id=-449128489&parse_mode=html&text=Телефон: 123123%0AСообщение: 1213123%0A


拉丁的传说
浏览 87回答 0
0回答

PIPIONE

这里的主要问题是您需要将西里尔字符编码为 URL 实体。您可以使用 来执行此操作。请参阅下面的完整代码:rawurlencode($txt)    $arr = array(      $phoneFieldset => $phone,      $nameFieldset => $name,      $messageFieldset => $message,    );    foreach($arr as $key => $value) {      $txt .= "<b>".$key."</b> ".$value."%0A";    };    $txt = rawurlencode($txt)  // To encode cyrillic entities    $request = "https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}";        echo $request;        $sendToTelegram = fopen($request,"r");
打开App,查看更多内容
随时随地看视频慕课网APP