如何向php服务器发送数据为json的post请求
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何向php服务器发送数据为json的post请求相关的知识,希望对你有一定的参考价值。
参考技术A 用curl$ch = curl_init();
$header[] = "Content-type: text/xml";//定义content-type为xml
curl_setopt($ch, CURLOPT_URL, $url); //定义表单提交地址
curl_setopt($ch, CURLOPT_POST, 1); //定义提交类型 1:POST ;0:GET
curl_setopt($ch, CURLOPT_HEADER, 1); //定义是否显示状态头 1:显示 ; 0:不显示
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//定义请求类型
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);//定义是否直接输出返回流
curl_setopt($ch, CURLOPT_POSTFIELDS, $postStr); //定义提交的数据,这里是XML文件
$res = curl_exec($ch);
curl_close($ch);//关闭本回答被提问者和网友采纳 参考技术B 两种方法,ajax模拟发送,然后就是curl
Telegram 向 webhook 发送重复的 POST JSON 请求
【中文标题】Telegram 向 webhook 发送重复的 POST JSON 请求【英文标题】:Telegram sends duplicate POST JSON requests to webhook 【发布时间】:2016-10-30 16:41:49 【问题描述】:我正在尝试为电报开发城市机器人,但遇到了一个问题。 向机器人发送消息后,Telegram 向 webhook url 发送 2 个重复请求。 Webhook 脚本工作两次并向用户发送两次响应。 脚本 - 来自官方电报文档的 hellobot.php。 使用自签名 SSL 的服务器 vps 托管,并将证书密钥上传到电报。
来自服务器日志。
149.154.167.209 - - [28/Jun/2016:13:48:00 +0300] "POST /apps/gate.php HTTP/1.0" 200 86 "-" "- 149.154.167.209 - - [28/Jun/2016:13:48:00 +0300] "POST /apps/gate.php HTTP/1.1" 200 86 "-" "- 149.154.167.209 - - [28/Jun/2016:13:48:00 +0300] "POST /apps/gate.php HTTP/1.0" 200 86 "-" "- 149.154.167.209 - - [28/Jun/2016:13:48:00 +0300] "POST /apps/gate.php HTTP/1.1" 200 86 "-" "-
如何解决这个问题?
【问题讨论】:
你找到这个问题的答案了吗? 【参考方案1】:您的机器人应该存储最后一个update_id
,然后通过 update_id 进行比较
【讨论】:
【参考方案2】:当 Telegram 收到来自您的机器人用户的消息时,将消息以 JSON 格式发送到您的 webhook URL。
如果
-
在您的响应页面中出现错误,
或需要很长时间才能完成响应,
然后 Telegram 再次将消息发送到您的服务器。
【讨论】:
如果您仔细检查附加的服务器日志,我的服务器会在正常时间响应 200 个代码。【参考方案3】:你能发布一些代码吗?
如果您要求getupdates
并在每个result
上向用户发送响应;它可能会发送重复,因为您没有正确设置偏移量
偏移量(说明): 要返回的第一个更新的标识符。必须比先前接收到的更新的标识符中的最高值大一。默认情况下,会返回从最早的未确认更新开始的更新。一旦使用高于其 update_id 的偏移量调用 getUpdates,则认为已确认更新。 ...
#getupdates_offset
【讨论】:
我询问了 webhook 方法,谢谢回复,但对我来说没用。以上是关于如何向php服务器发送数据为json的post请求的主要内容,如果未能解决你的问题,请参考以下文章