云盾身份认证二要素接口提示参数非法(curl用get方法传中文参数乱码)

2023-11-11

 接口文档给的示例代码如下图:

<?php
    $host = "http://id2meta.market.alicloudapi.com";
    $path = "/id2meta";
    $method = "GET";
    $appcode = "你自己的AppCode";
    $headers = array();
    array_push($headers, "Authorization:APPCODE " . $appcode);
    $querys = "identifyNum=identifyNum&identifyNumMd5=identifyNumMd5&userName=userName&userNameMd5=userNameMd5";
    $bodys = "";
    $url = $host . $path . "?" . $querys;

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_FAILONERROR, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, true);
    if (1 == strpos("$".$host, "https://"))
    {
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    }
    var_dump(curl_exec($curl));
?>

 这个代码用上之后有两个问题。

一是返回值带head请求头信息,导致json_decode($data,true);处理后结果为null,把curl_setopt($curl, CURLOPT_HEADER, true);里的true改为false后解决。

二是请求的参数中姓名是中文,错误提示为参数非法(userName),推断是编码问题。先是

修改请求头header,加上如下代码。

$headers = array();
array_push($headers, "Content-Type" . ":" . "application/x-www-form-urlencoded; charset=UTF-8");
或
array_push($headers, "Content-Type" . ":" . "text/html; charset=UTF-8");

都不行,然后猜测是存在bom格式,加入如下代码处理

if(preg_match('/^\xEF\xBB\xBF/',$info)){
    $info = substr($info,3);
}
$info = json_decode(trim($info),true);

还是不行,最后给中文参数加上urlencode()函数处理后成功。但这是header请求头设置了utf-8编码的情况,单独用这个函数是否可以没试。

$querys = "identifyNum=".$card."&"."userName=".urlencode($name);

扩展:

其实在接口文档提供的调试工具中,可以发现接口传参是这样子的:

即中文姓名被编码成了百分号与16进制数字的组合,这就是Urlencode编码,其又称百分号编码,是一种很常用的编码方式。如果了解这点,或许能更快的发现问题。

 

 参考文献:

云盾身份认证(身份证二要素核验)【最新版】_实名认证接口/API_身份证接口/API-云市场-阿里云 (aliyun.com)

php curl后json_decode无法显示的问题_php json_decode 数组值不显示缩在一起。。。显示_0xzmz的博客-CSDN博客

PHP基于curl发送post、get请求中文乱码问题解决方法 亲测有效_curl utf8_夏夏老是睡不着.的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

云盾身份认证二要素接口提示参数非法(curl用get方法传中文参数乱码) 的相关文章

  • 当存在联系时如何为数组分配排名号

    当尝试为数组中存在平局的数值分配排名时 我很难知道从哪里开始 因此 例如 我需要像下面这样转换一个数组 myarray 4 76 34 13 34 到另一个数组中 例如 myarray2 1 5 3 5 2 3 5 基本上 当相同的数字在数
  • PHP/MySQL:检索邻接列表模型中的单个路径

    有没有什么有效的方法可以在不限制深度的情况下根据节点的ID检索邻接列表模型中的单个路径 就像如果我有一个名为 Banana 的节点的 ID 我可以获得以下路径 Food gt Fruits gt Banana 如果不可能的话也不是什么大问题
  • 在 symfony2 中为特定控制器设置 max_execution_time

    Using ini set 我可以扩展最大执行时间一个脚本的 在Symfony2 我可以添加ini set to web app php and web app dev php将增加的执行时间应用于所有控制器 但在这种情况下 我只想扩展最大
  • 如何在Web服务中传递URL

    我想将此 URL 作为网址中的值传递http localhost h2orn php verify php email emails hash hash但是 我只能在 符号之前传递 我想传递所有 URL 我正在使用java网络服务 代码在这
  • 在 Linux 中使用 --digest 选项通过curl 进行“摘要式身份验证”

    我正在尝试在Linux中使用curl更改基于Onvif的相机的日期 我已经在 C 中成功完成了此操作并使用摘要身份验证 但我陷入了这种情况 我正在使用以下命令 curl u admin admin digest http 10 104 37
  • PSR-4 代码库中条令生成器的解决方法

    在 Windows 机器上使用 Symfony 2 和 Doctrine 我正在尝试 从现有模式生成实体 php app console doctrine mapping import force CoreBundle annotation
  • 配置 .htaccess 以在 PHP 框架 (Silex) 上工作

    我的 Apache2 本地主机 linux 上有一个工作路径 http localhost lab silex web index php hello name 我想成为 http localhost lab silex hello nam
  • 检查发送到网页的请求数

    我正在编写一个 Java 多线程应用程序 它可以访问不同 Web 服务器的数百万个 有时甚至数十亿个 URL 这个想法是检查这些 URL 是否给出有效的 200OK 响应或 404 其他代码 我如何知道我的程序是否不会在他们的服务器上造成高
  • 一次将多个值插入MySQL [重复]

    这个问题在这里已经有答案了 谁能解释一下为什么这个 PHP MySQL 不起作用 基本上我需要从表单中一次插入大量行 因此会有多个名称字段 多个短 中 长字段等 我收到此错误 Notice Undefined variable Short1
  • HTTP KeepAlive 连接已被服务器关闭,但客户端同时发送了请求

    场景如下 有一个 http 反向代理 它有一个与应用程序服务器的持久连接池 它已收到客户端的请求 并在检查连接打开后向后端发出相同的请求 同时 服务器在收到请求之前关闭连接 代理失败 从后端读取错误 错误被发送到客户端 应如何处理这种竞争条
  • 从提交的表单中转义字符串中的字符

    每次发布帖子时 我都会得到转义字符 gt gt gt 我有一个多步骤表单 它将数据从一种表单传输到另一种表单 我将这些值与准备好的语句一起保存在数据库中 数据库中的值当前看起来像Paul s House 用户应该可以在字符串中使用单引号和双
  • WAMP 不显示目录列表中的图标

    过去 我通过 vmware 处理 PHP 代码 但最近我决定转而通过 WAMP 在 Windows 8 1 上 在本地进行处理 我创建了一个空文件夹tests in the www folder 然后在我的浏览器上输入http localh
  • URL 重写帮助

    RewriteEngine on RewriteCond REQUEST URI index php RewriteRule index php q 1 L 这应该将任何 url 重写为 index php q url 并且它可以工作 反正
  • 将秒转换为天、小时、分钟和秒

    我想转换一个变量 uptime这是秒 分为天 小时 分钟和秒 Example uptime 1640467 结果应该是 18 days 23 hours 41 minutes 这可以通过以下方式实现DateTime http php net
  • 如何覆盖 phpunit 中导出的变量?

    我知道我可以设置环境变量 https phpunit de manual current en appendixes configuration html在我的 phpunit xml 里面
  • MongoDB 的简单 HTTP/TCP 健康检查

    我需要为 Docker 容器内的 MongoDB 实例创建运行状况检查 尽管我可以采取解决方法并通过 CLI 使用 Mongo Ping 但最好的选择是创建一个简单的 HTTP 或 TCP 测试 标准 ping 测试中默认 27017 端口
  • 避免 SQLite3 中的 SQL 注入

    我正在尝试找出一种避免 SQL 注入的好简单方法 到目前为止我只能提出两个想法 对用户输入进行 Base64 编码 其实不想这样做 使用正则表达式删除不需要的字符 目前正在使用这个 不确定是否100 安全 这是我当前的代码
  • 使 div 的大小与其内部图像的大小相同

    我有一个带有以下代码的div HTML div img src img logo png div CSS div imgContainer width 250px height 250px padding 13px 问题是用户可以编辑图像大
  • 转换MAC地址格式

    我刚刚编写了一个小脚本 从交换机中提取数百个 MAC 地址进行比较 但它们的格式为 0025 9073 3014 而不是标准的 00 25 90 73 30 14 我对如何转换它感到困惑 我能想到的最好的办法就是在 处将它们分解成碎片 然后
  • $_SESSION 中保存大量信息可以吗?

    我需要存储许多数组 SESSION以防止从 MySQL 检索信息 可以吗 其中 太多 的信息有多少 SESSION还是没有 太多 谢谢 附 或者更好地使用http php net manual en book memcache php ht

随机推荐

  • 你要的住宅地产行业数据化解决方案来啦!

    传统标准化复制品和服务越来越难以应付市场需求与行业竞争格局的改变 众多房地产企业寻求数字化转型 在转型过程中 会遇到各种各样的挑战 而一套合适的住宅地产行业数据化解决方案会解决很多难题 助力房企顺利实现转型 我推荐帆软住宅地产行业数据化解决
  • 记一次JAVA自定义@interface中方法定义诡异问题

    诡异问题描述 使用IDEA工具 正常不报错但是执行mvn install的时候 出现了大量的方法和属性不存在提示错误 实际上都要是存在 但无论如何都编译不通过 这种场景有点类似于在一个类中少了个大括号 然后真个类报错的那种感觉 问题查找 排
  • Dyna-Q算法的理论基础及其代码实践【CliffWalking-v0】

    Dyna Q 理论基础 强化学习中 模型 通常指与智能体交互的环境模型 即对环境的状态转移概率和奖励函数进行建模 根据是否具有环境模型 强化学习算法分为两种 基于模型的强化学习 model based 无模型的强化学习根据智能体与环境交互采
  • 2016年蓝桥杯省赛生日蜡烛题目

    生日蜡烛 问题描述 某君从某年开始每年都举办一次生日party 并且每次都要吹熄与年龄相同根数的蜡烛 现在算起来 他一共吹熄了236根蜡烛 请问 他从多少岁开始过生日party的 请填写他开始过生日party的年龄数 注意 你提交的应该是一
  • logistic回归_二元logistic回归分析

    SPSS学习乐园 点击上方 蓝色 字体可关注 logistic回归 前面介绍过多重线性回归分析 该分析方法是研究一个因变量 服从正态分布 与多个自变量的数量关系 多重线性回归分析 在医学研究中 常常需要研究的结局变量不是连续型变量 而是二分
  • Windows 重装系统-U盘启动盘制作及启动

    重启可以解决90 的问题 重装系统可以解决99 9 的问题 本文主要记录一下 相关过程及相关注意事项 以联想电脑为例 一 制作U盘启动盘 准备工具 U盘 最好8G以上 电脑 联网 注意 1 制作完成后U盘会被格式化 1 浏览器搜索 win1
  • GD32F103基础教程—跑马灯实验(六)

    一 教程简介 本章主要是讲解多路GPIO输出实验 及相关GPIO输 出配置方法 并控制LED2和LED3灯实现间隔1s闪烁 二 实验流程 1 工程配置 跑马灯工程配置方法与第五章的配置方法一致 具体请 查看第五章教程 本章不再赘述 2 源码
  • linux下kbhit的头文件,linux下kbhit的实现

    我们知道 在windows下有个键盘测试函数 int kbhit void 使用该函数需要包含头文件conio h 执行时 kbhit测试是否有键盘按键按下 若有则返回非零值 否则返回零 在Unix Linux下 并没有提供这个函数 在li
  • Matlab似然比检验函数,似然比检验 (LR test)

    计量中检验的一般套路是以 p value 显著 拒绝原假设为理想情况 然而总有几个检验的假设是不按套路出牌的 Hansen 检验算一个 LR 检验算第二个 Stata 应用 LR 检验可用于模型的比较和选择 用法与 Hausman 检验相似
  • 【Python基础】之字符串格式化(%百分号形式和format形式)

    字符串的格式化主要有两种 第一种是 形式的 第二种是python特有的 format形式 百分号形式 s 我是 s 我今年 d岁 mary 18 print s 我是mary 我今年18岁 format形式 t 我是 我今年 岁 forma
  • Android studio配置Google play服务

    Android studio配置Google play服务 1 File gt settings gt Android SDK gt SDK tools gt 勾选 Google Play services 然后Apply OK即可 可参考
  • OpenCV-Python实战(1)——OpenCV简介与图像处理基础

    OpenCV Python实战 1 OpenCV简介与图像处理基础 OpenCV介绍 Python安装OpenCV OpenCV主要模块 OpenCV应用场景 OpenCV图像处理基础 图像基础 图像处理中的主要问题 图像处理流程 像素 颜
  • 将整数n分成k份(回溯)

    Name 将整数n分成k份 回溯 Copyright Author 巧若拙 Date 16 12 18 13 25 Description 将整数n分成k份 将整数n分成k份 且每份不能为空 任意两份不能相同 不考虑顺序 例如 n 7 k
  • [单片机]KeilC51简单流水灯制作与原理

    P1 单行最简流水灯示例 首先先看原理图 下面为对应解释 最好使用低电平驱动 所谓低电平驱动就是引脚部分为低电平 就如图中电路所示 VCC处于LED右侧 故LED右侧高电平而其左侧低电平 符合条件 这里使用八个LED 自上而下排列 注意这里
  • SaaS架构实现理论(三)可配置多租户

    互联网时代的软件革命 SaaS架构 学习笔记三 1 Multi Tenant应用的可配置性 1 1数据可配置 有些租户想要存储 对其有用 有些租户不想 对其无用 这种系统实现过滤中并不存在 而用户又需要保存的数据 称之为扩展数据 多租户的S
  • Response.setContentType(MIME)的作用及参数列表

    Response setContentType MIME 的作用是时客户端的浏览器区分不同种类的数据 并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据 MIME的作用 由于MIME类型与文档的后缀相关 因此服务器使用文档的
  • 操作系统(一)--概述

    1 操作系统是紧贴硬件之上 所有其他软件之下 是其它软件的环境 用来管理硬件 使cpu I O设备和存储空间能够有效利用 管理分配软硬件资源 合理组织计算机工作流程 作业管理 进程管理 实现用户接口 弥补硬件系统的类型和数量的差别 将覆盖了
  • 基于MCU,如何零代码无开发实现OTA差分升级?

    概述 随着物联网设备智能化的发展 OTA 升级已经成为了业界公认的基础能力 而 OTA 在设计和实现过程中需要依赖于物联网设备的硬件方案 物联网设备主流的硬件方案为 1 直接基于通讯芯片 模块开发的方案 用户升级的主要目标是通讯芯片 模块
  • Oracle 错误 maximum number of processes(150) exceeded 解决办法

    只保留以上服务 关掉其他没用的服务即可
  • 云盾身份认证二要素接口提示参数非法(curl用get方法传中文参数乱码)

    接口文档给的示例代码如下图