php提交raw_PHP中如何POST提交raw数据?
上图是使用POSTMAN工具调试的,用raw形式提交数据就会返回最底部的那串数据;
而下图,则是使用form-urlencoded形式提交的数据,返回错误了。使用第1种form-data形式也是如此。
现在的情况是,我使用PHP的curl来post数据,则如上图所示一样的错误。
代码如下:
function curls($url, $data_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-AjaxPro-Method:ShowList',
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($data_string))
);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$get_url = "http://abc.xxx.com/UC_News_ShowList,App_Web_abc.ashx";
$post_str = '{"P":5,"Sclass":"新闻","Table":"HS_N_News","Link":"News"}';
$post_datas = curls($get_url, $post_str);
echo $post_datas;
?>
邪恶的分割线: 已解决
已解决:
这个和post方式无关。而是因为少了个header
$headers = array(
"User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36",
"X-AjaxPro-Method:ShowList"
);
代码最终形态是:
function curls($url, $data_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-AjaxPro-Method:ShowList',
'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36'
);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$get_url = "http://abc.xxx.com/UC_News_ShowList,App_Web_abc.ashx";
$post_str = '{"P":5,"Sclass":"新闻","Table":"HS_N_News","Link":"News"}';
$post_datas = curls($get_url, $post_str);
echo $post_datas;
POST的数据依然是json格式的数据,而不是array形式的。被POSTMAN给坑了~!!!
回复内容:
上图是使用POSTMAN工具调试的,用raw形式提交数据就会返回最底部的那串数据;
而下图,则是使用form-urlencoded形式提交的数据,返回错误了。使用第1种form-data形式也是如此。
现在的情况是,我使用PHP的curl来post数据,则如上图所示一样的错误。
代码如下:
function curls($url, $data_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-AjaxPro-Method:ShowList',
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($data_string))
);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$get_url = "http://abc.xxx.com/UC_News_ShowList,App_Web_abc.ashx";
$post_str = '{"P":5,"Sclass":"新闻","Table":"HS_N_News","Link":"News"}';
$post_datas = curls($get_url, $post_str);
echo $post_datas;
?>
邪恶的分割线: 已解决
已解决:
这个和post方式无关。而是因为少了个header
$headers = array(
"User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36",
"X-AjaxPro-Method:ShowList"
);
代码最终形态是:
function curls($url, $data_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-AjaxPro-Method:ShowList',
'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36'
);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$get_url = "http://abc.xxx.com/UC_News_ShowList,App_Web_abc.ashx";
$post_str = '{"P":5,"Sclass":"新闻","Table":"HS_N_News","Link":"News"}';
$post_datas = curls($get_url, $post_str);
echo $post_datas;
POST的数据依然是json格式的数据,而不是array形式的。被POSTMAN给坑了~!!!
http://stackoverflow.com/questions/13099177/how-to-send-raw-post-data-with-curl-php
据说设置一个不可识别的Content-Type,POSTFILEDS还是像以前一样传递一个Array就可以了
raw 就是http请求实体内容body中最原始的数据,可以自定义发送给服务器的body数据,并通过设置header来确定body的类型来供服务器解析。如果不设置content-type的话,默认为x-www-form-urlencoded。body中为参数=&参数=的形式
curl_setopt($handle, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
已解决,谢谢。
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php提交raw_PHP中如何POST提交raw数据?相关推荐
- php提交raw_PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
本文分析了PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别.分享给大家供大家参考,具体如下: $_POST:通过 HTTP POST 方法传递的变量组成的数组. ...
- Postman中请求体提交方式
Postman中请求体提交方式 x-www-form-urlencoded form-data raw binary x-www-form-urlencoded x-www-form-urlencod ...
- Git:如何在项目提交历史中查找已删除的文件?
曾几何时,我的项目中现在有一个文件,我现在希望能够得到. 问题是:我不知道何时删除它以及它在哪条路径上. 如何找到该文件的提交? #1楼 无法编辑接受的回复,因此在此处将其添加为答案, 要恢复git中 ...
- EF 4.1中内部经常提交的 exec sp_reset_connection 的用途原来是为了重用池中的连接...
sp_reset_connection 的作用 当您使用连接池连接到 SQL Server 时,SQL Server 将调用 sp_reset_connection 存储过程来重用之前池中的连接. ( ...
- 【开发环境】PyCharm 配置 GitHub ( 在 PyCharm 中向 GitHub 提交代码 )
文章目录 一.PyCharm 配置 GitHub 二.在 PyCharm 中向 GitHub 提交代码 一.PyCharm 配置 GitHub 选择 " 菜单栏 / File / Setti ...
- 4、Docker 提交运行中容器作为新的镜像
1.查看docker镜像 提交容器副本使之成为一个新的镜像 docker images tomcat 2.运行docker 镜像(tomcat)成为容器 docker run -it -d -p 88 ...
- tp5 ajax 路由,tp5中ajax方式提交表单
用ajax提交表单,迅速,快捷,实现页面无刷新提交表单. ajax批删 姓名 年龄 地址 添加 $("#sub").click(function(){ var name = $(& ...
- git中统计代码提交数
git中统计代码提交数 通过git log来取 git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5
- SVN在另类环境中实现自动提交的方法
环境: SVN SERVER 172.16.1.100 (CentOS 5.5 X64) WEB SERVER 172.16.1.111 (CentOS ...
最新文章
- mybatis批量更新报错XXXXX-Inline
- java连接到mysql_[操作系统]Java如何连接到MySQL数据库的
- 《Attention Is All You Need》
- 在C++中,你真的会用new吗?
- 七牛云 转码_开发者选择短视频SDK,为何青睐七牛云?
- idea上一步下一步快捷键_领航者的一步,左右行业的下一步!双11海尔洗衣机再夺冠的思考...
- XE7 Unit scope names
- mysql数据的持久化_一起做个简单的数据库(五):持久化存储
- Github博客私人订制(一)
- 消息队列技术终结者(一)—通俗深刻地认识JMS(即Java Message Service)
- 显示100以内的所有偶数php,vb100-急需vb编程求100以内所有奇数和及所有偶数和vb编程求100以 爱问知识人...
- Mathematica note
- 如何深入学习 Android Framework
- 拉拉米抢单发单源码 二开ui 带视频介绍 放量功能
- 梯度类算法原理:最速下降法、牛顿法和拟牛顿法
- java.lang.IllegalStateException: getWriter() has already been called for this response问题解决
- 让谷歌折戟的AI流行病预测,在今天如何被创业公司攻占?
- 网页乱码与设置utf-8乱码
- 模拟电路-振荡电路、振荡电路类型 (一)
- 如何查看本地activex插件
热门文章
- MySQL Timeout解析
- 设计友好的错误信息页面
- 博客订阅代码de制作
- 看看如何解决“SQL Server只能使用Windows身份登录,不能使用sa等Sql server身份进行登录”的问题...
- sql server 2008学习6 更复杂的查询
- 【原】Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)...
- 详解git pull和git fetch的区别:
- python算法与数据结构-选择排序算法(33)
- mysql 存储引擎接口_MySQL体系结构和存储引擎
- 微信小程序点击button按钮后重置输入框等表单内容