前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >url里面有了中文,一天就没了

url里面有了中文,一天就没了

作者头像
酒馆丁老师
发布2021-11-18 11:15:59
6410
发布2021-11-18 11:15:59
举报

在进行HTTP 请求时,如果地址URL 里面有中文,一定要记得进行urlencode,单独对中文urlencode。---我说的。

目录

1.前言

2.接口测试没问题

3.使用PHP 发起http 请求报错

4. curl请求报错

5.最终发现问题

1前言

昨天在使用PHP 对接一个get 请求的接口,本来是非常非常简单的,结果却因为地址中带有中文折腾了一天。

2接口测试没问题

拿到接口后,例行放到postman 里面,结果200 没有问题,接口可用。又扔到浏览器请求了下,返回正确。心里有点高兴,真顺利呀!

3使用PHP发起HTTP请求

但是在 使用PHP 请求时却不那么顺利了。

url地址如下:

代码语言:javascript
复制
$url = 'http://localhost:8081/checkIdentity/checkIsAccordWithCondition?name=张三&idNumber=3702818&securityId=eb2f&timestamp=1637041389930';

拿到地址后我确实使用urlencode 了,但是确实对整个url 进行的urlencode。

代码语言:javascript
复制
$url = urlencode($url);

但是使用CURL 发起HTTP 请求时,却报错,报 403 forbidden 。询问接口提供方,接口是否有特殊限制,比如限制了curl 发送的HTTP,提供方回复,单纯的HTTP 没有任何限制。【现在想想也是,都是HTTP,哪有什么区别】。又想是不是 因为header 设置的不对,于是把userAgent 等一系列参数设置了遍,还是无效。猜测是不是curl 有问题。

4curl请求报错

在分别在服务器和测试服务器都进行了curl测试发现,curl 均不能成功,反馈给接口提供方。【接口方也很无奈,接口本来就没问题】。其实这里curl就有问题了,还是因为中文的问题,导致curl 请求没成功

5最终发现问题

搞了一天PHP HTTP 请求不成功,中间除了用curl 还使用了file_get_contents 、fsockopen 均没有成功!都开始怀疑PHP了。但是接口提供方用java 可以访问,实在不行使用java 吧。搭了springboot 写了个接口

,浏览器访问下,没问题。看了眼控制台看到 name中文被转码了。

不死心,想是不是使用PHP 单独对中文urlencode 下可以?

结果真的是单独对中文进行urlencode ,可行!!

代码语言:javascript
复制
$url = 'http://localhost:8081/checkIdentity?name='.urlencode('张三').'&idNumber=3702818&securityId=eb2f&timestamp=1637041389930';

总结:遇到get 请求传中文时一定要记得urlencode!!!!!!!!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 丁老师的技术随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1前言
  • 2接口测试没问题
  • 3使用PHP发起HTTP请求
  • 4curl请求报错
  • 5最终发现问题
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档