php 如何接受并转换http字节流 php http 字节流 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 补充下:原始文件流里面的内容如下:launch {"primary":"-1415673003223"} 1415673003223controller {"model":"Test Controller","primary":"count"} 1415673003991click {"click_name":"Test Button Name","primary":"count"} 1415673004598view {"view_name":"Test Page Name","primary":"1415673005202"} 1415673005203view {"view_name":"Test Page Name","primary":"-1415673005795"} 1415673005795game {"package_name":"Test Game","primary":"1415673007231"} 1415673007231game {"package_name":"Test Game","primary":"-1415673008047"} 1415673008051 如果只是存入文件 你可以$path ="/tmp/newfile"$content = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : '';file_put_contents($path, $fileContent);如果要进行处理 你需要$content = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : '';//然后对$content进行字符串处理得到你需要的结构 我试了下您的方式, 取出来的content是乱码,这也是一直我卡住的地方。如您所见,java端在最初写入文件,到读取文件流,到转换字节流,到setEntity都没有做字符编码的特殊处理。所以接下来如何处理乱码的问题呢? 你 $s = file_get_contents('php://input');file_put_contents('test.txt', base54_encode($s));贴出 test.txt 的内容 H4sIAAAAAAAAAH3OXWuDMBgF4Ov2Z3gdJIn5UsiFjIwVnB3ald1JTFIaMLFYLIyx/z63wkZhFN6bw8vDOTraafS2u0SJGAijdYOs3G7/xiCY3OD02X3/dqrddY2qVNmqbq+adrOtu8dt07Xl80ulwMVFO04ynIPIF+mD8zLOwwBm/8tfN/9KIyEI2khkiswVghR0OV4cLJittxL3mFnIiYa9JY7mPTaYCJ4zwdwhs73jiNIeI2COOsZl/U/Xw1NZ16q6KYrXRf4kEUypSGmWYsLWg56jOa4+ktPkg57ekyJBBFEmMs44Ezz5XN3kOyCHDGbkD1zz+gslJTZeZAEAAA==你说的是base64_encode吧,请指教! 刚刚用mb_detect_encoding($s, "auto") 检测了下 返回的是UTF-8, 但是存到文件里用vim看是乱码。难道是vim的问题? 我把文件拷贝到本地用配置好UTF-8的vim 查看,还是乱码... 接收到的的确是“乱码”,因为他做了 gzip 压缩$s = 'H4sIAAAAAAAAAH3OXWuDMBgF4Ov2Z3gdJIn5UsiFjIwVnB3ald1JTFIaMLFYLIyx/z63wkZhFN6bw8vDOTraafS2u0SJGAijdYOs3G7/xiCY3OD02X3/dqrddY2qVNmqbq+adrOtu8dt07Xl80ulwMVFO04ynIPIF+mD8zLOwwBm/8tfN/9KIyEI2khkiswVghR0OV4cLJittxL3mFnIiYa9JY7mPTaYCJ4zwdwhs73jiNIeI2COOsZl/U/Xw1NZ16q6KYrXRf4kEUypSGmWYsLWg56jOa4+ktPkg57ekyJBBFEmMs44Ezz5XN3kOyCHDGbkD1zz+gslJTZeZAEAAA==';$s = base64_decode($s);echo gzdecode($s);android_vn=16,model=LeTVX60,release_vn=TEST_RELEASE_VERSION_FOR_SAMPLE,vendor=msm8960,imei=null,ui_vn=TEST_UI_VERSION_FOR_SAMPLE,vc=0,mac=1c:3e:84:54:57:fd,udid=2b26d074a0bd4e59b2c24879686ef3dbe7155b21,channel=TEST_CHANNEL_FOR_SAMPLE,vn=null,ip=10.58.53.246launch {"primary":"1415683767687"} 1415683767687launch {"primary":"1415683906034"} 1415683906034应该是这个(解压没有出错,得到的文字完整) $s = 'H4sIAAAAAAAAAH3OXWuDMBgF4Ov2Z3gdJIn5UsiFjIwVnB3ald1JTFIaMLFYLIyx/z63wkZhFN6bw8vDOTraafS2u0SJGAijdYOs3G7/xiCY3OD02X3/dqrddY2qVNmqbq+adrOtu8dt07Xl80ulwMVFO04ynIPIF+mD8zLOwwBm/8tfN/9KIyEI2khkiswVghR0OV4cLJittxL3mFnIiYa9JY7mPTaYCJ4zwdwhs73jiNIeI2COOsZl/U/Xw1NZ16q6KYrXRf4kEUypSGmWYsLWg56jOa4+ktPkg57ekyJBBFEmMs44Ezz5XN3kOyCHDGbkD1zz+gslJTZeZAEAAA==';$s = base64_decode($s);echo gzdecode($s);android_vn=16,model=LeTVX60,release_vn=TEST_RELEASE_VERSION_FOR_SAMPLE,vendor=msm8960,imei=null,ui_vn=TEST_UI_VERSION_FOR_SAMPLE,vc=0,mac=1c:3e:84:54:57:fd,udid=2b26d074a0bd4e59b2c24879686ef3dbe7155b21,channel=TEST_CHANNEL_FOR_SAMPLE,vn=null,ip=10.58.53.246launch {"primary":"1415683767687"} 1415683767687launch {"primary":"1415683906034"} 1415683906034 这个回答完全正确!确实是做了gzip压缩,交学费了!而且我之前也是知道他把文件流做了gzip压缩, 但是对这个不清楚所以也没有在提问中说道,自己也没有望着方面想。另外请教一下, 你是如何得知做了gzip压缩的?小弟刚开始做php,希望不吝赐教! 感谢回答,另外也感谢orangeholic 这位朋友的帮助! base64 解码后的是二进制串,而你在#1补充了原始文件的样式(显然不是二进制的)所以尝试了可能的压缩算法,不想一下就对上了 补充一下,得到的串的同两个字符是 "\x1f\x8b"这是 gzip 的文件头标识 跪求 ! 友情链接保存到文件中,然后再从文件中读取显示 网站返回值写入cookies问题 做一个定时广告怎么弄 iestore 后台点击商品编辑,一片空白 抓取网页内容程序该怎么写呢? 做这样一个网站多少钱, 用PHP,加空间 php 农行 在线付款 solrphpclient 我想在这里加个时间间隔,在一天内刷新页面不会换内容。 百度云存储怎么上传文件 移动安卓端推送 字符串里面的内容如何替换成数组的内容?
launch {"primary":"-1415673003223"} 1415673003223
controller {"model":"Test Controller","primary":"count"} 1415673003991
click {"click_name":"Test Button Name","primary":"count"} 1415673004598
view {"view_name":"Test Page Name","primary":"1415673005202"} 1415673005203
view {"view_name":"Test Page Name","primary":"-1415673005795"} 1415673005795
game {"package_name":"Test Game","primary":"1415673007231"} 1415673007231
game {"package_name":"Test Game","primary":"-1415673008047"} 1415673008051
$path ="/tmp/newfile"
$content = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : '';
file_put_contents($path, $fileContent);
如果要进行处理 你需要
$content = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : '';
//然后对$content进行字符串处理得到你需要的结构
$s = file_get_contents('php://input');
file_put_contents('test.txt', base54_encode($s));贴出 test.txt 的内容
刚刚用mb_detect_encoding($s, "auto") 检测了下 返回的是UTF-8, 但是存到文件里用vim看是乱码。难道是vim的问题?
我把文件拷贝到本地用配置好UTF-8的vim 查看,还是乱码...
echo gzdecode($s);
android_vn=16,model=LeTVX60,release_vn=TEST_RELEASE_VERSION_FOR_SAMPLE,vendor=msm8960,imei=null,ui_vn=TEST_UI_VERSION_FOR_SAMPLE,vc=0,mac=1c:3e:84:54:57:fd,udid=2b26d074a0bd4e59b2c24879686ef3dbe7155b21,channel=TEST_CHANNEL_FOR_SAMPLE,vn=null,ip=10.58.53.246
launch {"primary":"1415683767687"} 1415683767687
launch {"primary":"1415683906034"} 1415683906034应该是这个(解压没有出错,得到的文字完整)
echo gzdecode($s);
android_vn=16,model=LeTVX60,release_vn=TEST_RELEASE_VERSION_FOR_SAMPLE,vendor=msm8960,imei=null,ui_vn=TEST_UI_VERSION_FOR_SAMPLE,vc=0,mac=1c:3e:84:54:57:fd,udid=2b26d074a0bd4e59b2c24879686ef3dbe7155b21,channel=TEST_CHANNEL_FOR_SAMPLE,vn=null,ip=10.58.53.246
launch {"primary":"1415683767687"} 1415683767687
launch {"primary":"1415683906034"} 1415683906034
这个回答完全正确!确实是做了gzip压缩,交学费了!而且我之前也是知道他把文件流做了gzip压缩, 但是对这个不清楚所以也没有在提问中说道,自己也没有望着方面想。
另外请教一下, 你是如何得知做了gzip压缩的?小弟刚开始做php,希望不吝赐教!
所以尝试了可能的压缩算法,不想一下就对上了
这是 gzip 的文件头标识