【问题标题】:Telegram bot API Keyboard api return HTTP response code: 400Telegram bot API 键盘 api 返回 HTTP 响应代码:400
【发布时间】:2017-05-24 12:02:07
【问题描述】:

嗨,这个 JSON 有什么问题

{"chat_id":149003957,"text":"Please Select your Language","reply_markup":{"keyboard":[[{"text":"English"},{"text":"Deutsh"}],[{"text":"Français"},{"text":"PyccKNN"}],[{"text":"Italiano"},{"text":"Espagnol"}]]}}

当作为 post 请求传递给 Telegram Bot API 方法“sendMessage”时,它会给出 HTTP 400

【问题讨论】:

  • 您好,您可以在提出请求的地方添加代码吗?此外,从文档中,您应该在 400 响应的正文中获得更具描述性的错误。你也可以分享一下吗? core.telegram.org/bots/api#making-requests
  • @AnilRedshift "ok": false, "error_code": 400, "description": "Bad Request: message text is empty"
  • 听起来text 字段为空。您可以发布发出请求的代码吗?
  • 嘿,实际上是“Deutsch”,你这里好像有一点错别字。 :)
  • @AnilRedshift 感谢 json 是正确的,代码添加了额外的字节。

标签: json api telegram telegram-bot


【解决方案1】:

我将您的对象发布到电报机器人 API 并成功接收消息。您的对象没有任何问题。这是我在 c# 中的示例代码:

private static T Call<T>(string body)
{
    var contentBytes = Encoding.UTF8.GetBytes(body);
    var request = (HttpWebRequest)WebRequest.Create("your bot url" + "methodName");

    request.Timeout = 60 * 1000;
    request.ContentLength = contentBytes.Length;
    request.Method = "POST";
    request.ContentType = @"application/json";

    using (var requestWritter = request.GetRequestStream())
        requestWritter.Write(contentBytes, 0, (int)request.ContentLength);

    var responseString = string.Empty;
    var webResponse = (HttpWebResponse)request.GetResponse();
    var responseStream = webResponse.GetResponseStream();
    using (var reader = new StreamReader(responseStream))
        responseString = reader.ReadToEnd();

    return JsonConvert.DeserializeObject<T>(responseString);
}

【讨论】:

    猜你喜欢
    • 2016-03-16
    • 2017-01-05
    • 2015-04-03
    • 1970-01-01
    • 2018-07-27
    • 2016-11-24
    • 1970-01-01
    • 2021-10-11
    • 2016-12-28
    相关资源
    最近更新 更多