php接收不到java程序post过来的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php接收不到java程序post过来的数据相关的知识,希望对你有一定的参考价值。
这是java客户端一个注册的简单例子:
我在php端用$_POST获取不到任何东西 用file_get_contents("php://input") 也不行 应该怎么获取啊
那边要传中文,所以要urlencode一下。
我打印$_POST,传过来的所有东西在KEY里。于是,用name=""id":"20","name":"张三""。
但打印是显示不出来的,因为“ 的字符实体。
于是先htmlspecialchars_decode,才解决问题。 参考技术A 请问题主用的什么库发送post请求?没搜到ApiUtil这个类。
用HTML写个简单的html表单,测试一下post,好使吗?追问
我用html测试能用 但java端不行 那边回应是RequestParams包装数据,用post方式上传
参考技术B querystring用$_GET追问我不太懂java 你能说的详细点么 这数据不是post过来的?
写代码中遇到的问题(php接收不到传过来的json数据,php使用utf8的用法)
今天写代码用python处理完数据,传给php服务器后,发现接收不到数据,因为是跨域,所以加了消息头:header(‘Access-Control-Allow-Origin:*‘);但是并没有什么卵用,后来不停地百度,东拼西凑终于找到了解决方案。
方案如下:
1。传过来的数据要加header头:headers = {‘Content-Type‘: ‘application/json‘}
2。PHP接收数据时要用:$GLOBALS[‘HTTP_RAW_POST_DATA‘]。
原因如下: $_POST:通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。 PHP默认只识别application/x-www.form-urlencoded标准的数据类型,也就是可以正常接受的post数据。
如text/xml 或者 soap 或者 application/octet-stream 之类的内容无法解析,如果用$_POST数组来接收就会失败!故保留原型,交给$GLOBALS[‘HTTP_RAW_POST_DATA‘] 来接收。
php接收到数据以后,上传mysql后发现中文乱码,在PHP中加入header("Content-type: text/html; charset=utf-8");mysql中设置字符集utf-8也无效,后来发现是pdo没有设置中文编码,加上以后,遂成功。
另附
utf-8的使用方法:
“UTF-8”是标准写法,php在Windows下边英文不区分大小写,所以也可以写成“utf-8”。“UTF-8”也可以把中间的“-”省略,写成“UTF8”。一般程序都能识别,但也有例外(如下文),为了严格一点,最好用标准的大写“UTF-8”。
在数据库中只能使用“utf8”(MySQL) 在mysql的命令模式中只能使用“utf8”,不能使用“utf-8”,也就是说在PHP程序中只能使用“set names utf8(不加小横杠)”,如果你加了“-”此行命令将不会生效,但是在php中header时却要加上“-”,因为IE不认识没杠的“utf8”,原因见下文。
PHP中的header:
<?php header(‘Content-Type: text/html; charset=UTF-8‘); ?> //奇怪了:Content-Tyep用冒号,Chatset却是等号。
静态文件使用:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
总结:【只有在MySQL中可以使用“utf-8”的别名“utf8”,但是在其他地方一律使用大写“UTF-8”。】
以上是关于php接收不到java程序post过来的数据的主要内容,如果未能解决你的问题,请参考以下文章