无法通过Curl向Android端Tasker传递参数求助
解决Tasker接收HTTP GET参数失败的问题
核心问题:Tasker HTTP Server的参数映射逻辑
Tasker的HTTP服务对GET参数的处理不是直接按参数名绑定变量,而是有自己的规则,这就是你看到%Number、%Par1这类占位符的原因。
具体解决步骤
1. 用Tasker预设参数变量直接获取
Tasker会把GET请求的参数按顺序存入%Par1、%Par2...系列变量。比如你的请求http://192.168.1.10:8080?Number=+1234567890,单个参数会直接存在%Par1里,在Tasker任务里调用%Par1就能拿到号码值。
2. 手动解析URL提取指定参数(保留参数名)
如果想通过Number这个参数名提取值,需要两步操作:
- 先添加「变量设置」动作,把Tasker自动保存的完整请求内容
%http_data赋值给临时变量%full_url - 再添加「变量搜索替换」动作,用正则表达式
Number=([^&]+)匹配,将结果存入%target_number,这样就能精准拿到+1234567890
3. 处理特殊字符编码
你的参数里有+号,curl会自动把它解析为空格(URL编码规则),导致Tasker拿到错误值。有两种解决方式:
- 在curl请求里手动编码
+为%2B,请求改为:curl -X GET http://192.168.1.10:8080?Number=%2B1234567890 - 在Tasker里添加「变量搜索替换」,把
%Par1里的空格替换回+
4. 检查HTTP Server配置
- 确认Tasker的HTTP服务已开启,端口设为8080
- 触发任务的「HTTP Server」配置中,勾选「接受GET请求」
- 不要随意加URL路径层级(比如
/callnumber),除非你在Tasker里设置了对应路径匹配,否则会干扰参数解析
快速验证
在Tasker任务里加一个「闪屏」动作,把%Par1或提取后的%target_number作为显示内容,发送请求后看闪屏是否显示正确号码,就能确认参数是否提取成功。
内容的提问来源于stack exchange,提问作者meeee
相关产品推荐
相关产品推荐

