PHP JSON不能转&字符? jsonphp 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 变通下, 能不能先将&替换成一个字符串替换成{and},然后到java里面替换回来。 具体的post代码?测试一下php发到php看接收到什么?快速解决方案就是把&替换成{QUOTE}这种东西到了JAVA再换回来 \&再不行就\&如果以上都不行,你检查一下java那边接收json参数时候,有没有类似urldecode的处理。 LZ是用 url 的形式传数据吗 ? 这个在长度上有限制,据说是不能超过 1024 , 如果你远远没有达到这个数字,可以考虑把& 先变成 [ASC(38)] ,到了那边再转回来。 <?php header("Content-type:text/html;charset=utf-8"); $user_info = "data=" . "{ \" developerCount \": 1,\"data\": [{ \"originalID\": \"123\",\"developerName\": \"liux\", \"developerType\": \"zonas\", \"trueName\": \"zonas\", \"eMail\": \"[email protected]\", \"phone\": \"86-10-62565615-208\", \"mobile\": \"86-13900000000\", \"fax\": \"86-10-62565615-208\", \"ECURL\": \"http://DNS/123.JPG\", \"CRURL\": \"\", \"CTURL\": \"\", \"registerTime\": \"2014-04-02 14:14:19\"} ]}"; $apk_info = "{ \"APPCount \": 1, \"data\": { \"APK\": [ { \"APPDPI\": [ \"180*180\", \"320*320\" ], \"originalID\": \"998\", \"APPName\": \"斗地主(单机版)\", \"APPSource\": \"CloudTV\", \"APPType\": \"APK\", \"PKSize\": 3929055, \"PKURL\": \"http://180.168.93.163:8080/cloudTV&Platform/external/getPK?PKURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/danjidoudizhu_226.apkAPPID=998PID=CloudTVAPPStorepversion=1.0\",\"PKMD5\": \"A0098233123456780987654312345678\", \"TVModel\": [ \"TCL12345\", \"Haier23456\" ], \"WEBLink\": \"\", \"bigIcon\": \"http://180.168.93.163:8080/cloudTVP&latform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ78832300.jpgPID=CloudTVAPPStorepversion=1.0\", \"category\": \"游戏\", \"categoryID\": \"10005\", \"commentsCount\": 0, \"creator\": null, \"description\": \"各大市场彪升最快的单机斗地主\", \"downloadCount\": 0, \"helpLink\": \"\", \"language\": [ \"游戏\", \"纸牌\" ], \"keywords\": \"\", \"midIcon\": \"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ78832200.jpgPID=CloudTVAPPStorepversion=1.0\", \"minSDKVersion\": \"2.2\", \"modifiedTime\": \"\", \"network\": \"\", \"offlineTime\": \"\", \"onlineTime\": \"\", \"operateType\": [ \"REM\" ], \"packageName\": \"danjidoudizhu_226.apk\", \"price\": 0, \"provider\": null, \"ratingCount\": 0, \"releaseDate\": \"\", \"reLevel\": 3, \"score\": 50, \"screenshot\": [ \"http: //180.168.93.163: 8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ1.jpgPID=CloudTVAPPStorepversion=1.0\", \"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ2.jpgPID=CloudTVAPPStorepversion=1.0\", \"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ3.jpgPID=CloudTVAPPStorepversion=1.0\", \"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ4.jpgPID=CloudTVAPPStorepversion=1.0\", \"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ5.jpgPID=CloudTVAPPStorepversion=1.0\", \"http: //180.168.93.163: 8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ6.jpgPID=CloudTVAPPStorepversion=1.0\" ], \"searchCount\": 0, \"searchName\": \"\", \"smallIcon\": \"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ78832150.jpgPID=CloudTVAPPStorepversion=1.0\",\"smalRIcon\": \"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ78832150.jpgPID=CloudTVAPPStorepversion=1.0\",\"bigRIcon\": \"http://180.168.93.163:8080/cloudTVPlatform/extrnal/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ78832150.jpgPID=CloudTVAPPStorepversion=1.0\", \"userPermission\": [ \"ACCESS_CHECKIN_PROPERTIES\", \"ACCESS_COARSE_LOCATION\" ], \"versionCode\": 1, \"versionName\": \"2.2.6\" } ], \"FLA\": [], \"JME\": [], \"WEB\": [] }}"; $apk_info = "data=".$apk_info; echo $apk_info; echo '<br>'; //echo $user_info; //echo '<br>'; $server = 'http://180.168.93.163:8080/cloudTVPlatform/external/api?act=notifyNewDeveloper&PID=CloudTVDN&pversion=1.0&format=JSON'; //����˵�ַ���������ҵĵ�ַ $apk_server = 'http://180.168.93.163:8080/cloudTVPlatform/external/api?act=notifyNewAPPList&PID=CloudTVDN&pversion=1.0&format=JSON'; $ch=curl_init(); curl_setopt($ch,CURLOPT_URL, $apk_server); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_POST,80); curl_setopt($ch,CURLOPT_POSTFIELDS,$apk_info); $data=curl_exec($ch); curl_close($ch); $obj=json_decode($data); echo $data; //$url->Upuser($user_info);?> 测试是&这个字符作怪,但我觉得奇怪,他自己用JAVA传的话,&是没有问题的,但用PHP传就出问题。把&去掉就没了。 你的 $apk_info 中的所有 url 写的都有问题& 应转义成 & curl_setopt($ch, CURLOPT_POSTFIELDS, $apk_info);问题在这$apk_info字符串如果包含&,后面的东西就解析成新的参数了改成$apk_info = "data=" . $apk_info; 注释掉curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('data'=>$apk_info)));就可以了 &用过不行啦~我是URL那里是随便加个&上去的 <?= 是什么意思? 和<?php有什么区别吗 PHP判断关键词个数的问题,PHP盲请教高手! 如何在图片的标签的前面和结尾分别加上<center></center>和<p></p>? Javascript的history.back为什么在弹出一个新窗口后,就不起作用了? ajax如何异步保存session require 问题,老是说找不到文件 我刚安装好了apache2.0.46,但运行却提示找不到服务器 关于文本操作的几个问题~@~ help! 只要有答案就送分. 【ZendGuard】有使用过ZendGuard的吗?关于试用版的问题,知道的人过来看下 php菜鸟急救
测试一下php发到php看接收到什么?
快速解决方案就是把&替换成{QUOTE}这种东西到了JAVA再换回来
再不行就\&
如果以上都不行,你检查一下java那边接收json参数时候,有没有类似urldecode的处理。
$user_info = "data=" . "{ \" developerCount \": 1,\"data\": [{ \"originalID\": \"123\",\"developerName\": \"liux\", \"developerType\": \"zonas\", \"trueName\": \"zonas\", \"eMail\": \"[email protected]\", \"phone\": \"86-10-62565615-208\", \"mobile\": \"86-13900000000\", \"fax\": \"86-10-62565615-208\", \"ECURL\": \"http://DNS/123.JPG\", \"CRURL\": \"\", \"CTURL\": \"\", \"registerTime\": \"2014-04-02 14:14:19\"} ]}";
$apk_info = "{
\"APPCount \": 1,
\"data\": {
\"APK\": [
{
\"APPDPI\": [
\"180*180\",
\"320*320\"
],
\"originalID\": \"998\",
\"APPName\": \"斗地主(单机版)\",
\"APPSource\": \"CloudTV\",
\"APPType\": \"APK\",
\"PKSize\": 3929055,
\"PKURL\": \"http://180.168.93.163:8080/cloudTV&Platform/external/getPK?PKURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/danjidoudizhu_226.apkAPPID=998PID=CloudTVAPPStorepversion=1.0\",
\"PKMD5\": \"A0098233123456780987654312345678\",
\"TVModel\": [
\"TCL12345\",
\"Haier23456\"
],
\"WEBLink\": \"\",
\"bigIcon\": \"http://180.168.93.163:8080/cloudTVP&latform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ78832300.jpgPID=CloudTVAPPStorepversion=1.0\",
\"category\": \"游戏\",
\"categoryID\": \"10005\",
\"commentsCount\": 0,
\"creator\": null,
\"description\": \"各大市场彪升最快的单机斗地主\",
\"downloadCount\": 0,
\"helpLink\": \"\",
\"language\": [
\"游戏\",
\"纸牌\"
],
\"keywords\": \"\",
\"midIcon\": \"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ78832200.jpgPID=CloudTVAPPStorepversion=1.0\",
\"minSDKVersion\": \"2.2\",
\"modifiedTime\": \"\",
\"network\": \"\",
\"offlineTime\": \"\",
\"onlineTime\": \"\",
\"operateType\": [
\"REM\"
],
\"packageName\": \"danjidoudizhu_226.apk\",
\"price\": 0,
\"provider\": null,
\"ratingCount\": 0,
\"releaseDate\": \"\",
\"reLevel\": 3,
\"score\": 50,
\"screenshot\": [
\"http: //180.168.93.163: 8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ1.jpgPID=CloudTVAPPStorepversion=1.0\",
\"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ2.jpgPID=CloudTVAPPStorepversion=1.0\",
\"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ3.jpgPID=CloudTVAPPStorepversion=1.0\",
\"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ4.jpgPID=CloudTVAPPStorepversion=1.0\",
\"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ5.jpgPID=CloudTVAPPStorepversion=1.0\",
\"http: //180.168.93.163: 8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ6.jpgPID=CloudTVAPPStorepversion=1.0\"
],
\"searchCount\": 0,
\"searchName\": \"\",
\"smallIcon\": \"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ78832150.jpgPID=CloudTVAPPStorepversion=1.0\",
\"smalRIcon\": \"http://180.168.93.163:8080/cloudTVPlatform/external/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ78832150.jpgPID=CloudTVAPPStorepversion=1.0\",
\"bigRIcon\": \"http://180.168.93.163:8080/cloudTVPlatform/extrnal/getPIC?PICURL=/android/forCloudTV/ddzdjb/ddzdjbv2.2.6/DDZ78832150.jpgPID=CloudTVAPPStorepversion=1.0\", \"userPermission\": [
\"ACCESS_CHECKIN_PROPERTIES\",
\"ACCESS_COARSE_LOCATION\"
],
\"versionCode\": 1,
\"versionName\": \"2.2.6\"
}
],
\"FLA\": [],
\"JME\": [],
\"WEB\": []
}
}";
$apk_info = "data=".$apk_info;
echo $apk_info;
echo '<br>';
//echo $user_info;
//echo '<br>';
$server = 'http://180.168.93.163:8080/cloudTVPlatform/external/api?act=notifyNewDeveloper&PID=CloudTVDN&pversion=1.0&format=JSON'; //����˵�ַ���������ҵĵ�ַ
$apk_server = 'http://180.168.93.163:8080/cloudTVPlatform/external/api?act=notifyNewAPPList&PID=CloudTVDN&pversion=1.0&format=JSON';
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL, $apk_server);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,80);
curl_setopt($ch,CURLOPT_POSTFIELDS,$apk_info);
$data=curl_exec($ch);
curl_close($ch);
$obj=json_decode($data);
echo $data;
//$url->Upuser($user_info);
?>
& 应转义成 &
问题在这
$apk_info字符串如果包含&,后面的东西就解析成新的参数了
改成
$apk_info = "data=" . $apk_info; 注释掉
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('data'=>$apk_info)));
就可以了