The request is badly formed
原因:url中包含空格
背景:做项目对接时,用的是get请求,然后输入的参数中有空格就会报这个错误
解决方法:
1,url中包含空格,使用urlencode去掉空格。这是在网上找的,但是不适合我的
*****************************************************************
//GBK
//echo urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+
//echo urldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_.
//echo rawurlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.%20
//echo rawurldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_.
////UTF-8
//echo urlencode("中文-_. ")."\n"; //%E4%B8%AD%E6%96%87-_.+
//echo urldecode("%E4%B8%AD%E6%96%87-_. %E4%B8%AD%E6%96%87")."\n";//中文-_. 中文
//echo rawurlencode("中文-_. ")."\n";//%E4%B8%AD%E6%96%87-_.%20
//echo rawurldecode("%E4%B8%AD%E6%96%87-_.%20%E4%B8%AD%E6%96%87-_.%20")."\n"; //中文-_. 中文-_.
2,使用get请求时,将所有的值放在数组中,而不是拼接url
我的get请求是把接受的参数拼接,参数值有空格时,就会报错,因此使用了另一种方法
这是拼接url,$url = "https://baidu.com/api/mami/NursingHandler.ashx?act=GETBABYRECORDINFONEW&babyId=".$data['babyid']."&custId=".$custId."&Code=".$data['code'];$list = CurlHelper::getInstance()->curl_get_https($url);curl_get_https方法:function curl_get_https($url){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过检查curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 跳过检查$tmpInfo = curl_exec($curl); curl_close($curl);return $tmpInfo; //返回json对象}
public function actionEvaluate(){$post = \Yii::$app->request->post();$custId = CurlHelper::getInstance()->getErpHsId(\Yii::$app->mall->id);$user_id =CurlHelper::getInstance()->getErpUserId(\Yii::$app->user->id);$data['act'] ='EVALUATE';$data['custId'] =$custId;$data['userid'] =$user_id;$data['marketType'] = $post['markType'];$data['projectid'] = $post['projectid'];$data['content'] = $post['content'];$data['star'] = $post['star'];$gen ="https://mm.hxqt.cn/api/mami/CustomerHandler.ashx";$url = $gen . "?" . http_build_query($data);$list = CurlHelper::getInstance()->httpGet($url);return ['code' => ApiCode::CODE_SUCCESS,'data' =>['list'=>$list,]]; }
httpGet的方法:public function httpGet($url, $param = array(), $headers = array()){try {$url = $this->appendParams($url, $param);$client = $this->getClient($headers);$response = $client->get($url);$body = $response->getBody();} catch (ClientException $e) {$body = $e->getResponse()->getBody();}if (!$body) {throw new \Exception('请求没有有效的返回');}$res = json_decode($body->getContents(), true);if (!$res) {throw new \Exception('请求返回值为空');}return $res;}
private function appendParams($url, $params = []){if (!is_array($params)) {return $url;}if (!count($params)) {return $url;}$url = trim($url, '?');$url = trim($url, '&');$queryString = $this->paramsToQueryString($params);if (mb_stripos($url, '?')) {return $url . '&' . $queryString;} else {return $url . '?' . $queryString;}}public function getClient($headers = array()){return new Client(['verify' => false,'headers' => $headers]);}
The request is badly formed相关推荐
- HTTP Error 400. The request is badly formed.
/* * 检验关键字 */ public function checksensitivewordsAjax() {$words = $this->post('words');$words = u ...
- 火狐浏览器访问网站出现 HTTP Error 400. The request is badly formed.错误,怎么解决
今天在访问某个网站时,出现一个"HTTP Error 400. The request is badly formed."错误, 那么应该如何解决呢? 1.问题描述: 用火狐浏览网 ...
- Cshell IF在进行数字计算时 提示 if: Badly formed number.
今天在写Cshell脚本时碰到的问题,特此记录来帮助自己加深记忆 Cshell的 if() 模块用法再次不赘述 可参考我收藏的一篇说明: https://blog.csdn.net/yuexiaxia ...
- ORA-39071: Value for EXCLUDE is badly formed.
在用expdp/impdp 导出导入数据的时候,有时候我们会用 exclude排除某些表的时候会报如下的错误: ORA-39001: invalid argument value ORA-39071: ...
- ORA-39001: invalid argument value ORA-39071: Value for EXCLUDE is badly formed.
我在使用Oracle的逻辑备份expdp的exclude特性时,总是出现以下错误: ORA-39001: invalid argument value ORA-39071: Value for EXC ...
- Netbeans 'badly formed maven project' 问题
Netbeans 6.7 + Apache Maven 2.0.9 有以下结构的maven工程: top_project |---pom.xml(top_level) |---sub_project ...
- raise ValueError(‘badly formed hexadecimal UUID string‘
如果说在python项目中models类中将原本是自增的字段,修改为UUID会出现什么问题 1.当你使用serializers的时候你会发现报错, raise ValueError('badly ...
- Mail merge region 'tablePrint' is badly formed. TableStart and TableEnd should be in the same sectio
模板文件当中, TableStart and TableEnd必须在同一界面,同一行当中,或者是同一单元格中.,把模板设 置成要求的同一界面,同一行,或者是同一单元格就好了
- DSP中由C转成C++出现编译 badly formed pragma错误的解决.
这是由于C++的#pragma DATA_SECTION用法同C不一致造成,以下是实例.省去了NAME. Using the DATA_SECTION Pragma a) C source fil ...
最新文章
- Android定制:修改开机启动画面
- AI人才报告 | AI稳超互联网平均薪资,哪些细分领域最受追捧?
- 极客新闻——06、刘润:给年轻人的10条工作建议
- (转)#Pragma用法
- Nginx+Supervisor安装部署.NET Core项目
- Atom 实用侧边栏插件
- python如何爬取网站所有目录_[python] 爬取网站所有的URL
- 从零开始学电脑_《新手从零开始学电脑》1.6——怎样才能打一手好字
- 代替for循环的常见问题
- 怀旧服开新服务器消息,怀旧服B测已经开启 全新内容爆料汇总
- 进程退出:SIGINT、SIGTERM和SIGKILL区别
- An'droid TextView
- 抢注小程序“诱饵”多 轻信者被“套路”
- linux格式化挂载的硬盘,linux格式化和挂载硬盘
- Mybatis中 if 语句使用空格问题
- 美术课程对计算机的好处,学美术的十大好处
- Android如何做出带有复杂水印的图片
- Teach-Repeat-Replan: A Complete and Robust System for Aggressive Flight in Complex Environments
- viicms仿乐享微信源码官方版
- 使用国密算法签名PDF文件