php物流对接中怎么传php string转json类型的json

php 怎么用输出流的形式给http接口传入json,并获取返回值?_百度知道
php 怎么用输出流的形式给http接口传入json,并获取返回值?
$url//web地址$json//传输的参数注意是输出流的形式并不是url?json后面跟参数怎么用php调用url接口传入json数据并获取返回值
我有更好的答案
是json格式,不要与get弄混了
用ajax就可以实现
POST 过去不行吗?
没明白什么意识
使用php的curl方法,详细用法见手册:
其他2条回答
为您推荐:
其他类似问题
json的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。什么是网站接口用PHP调用JSON接口以及编写接口的方法
当前位置:网站首页 - 信息中心
什么是网站接口用PHP调用JSON接口以及编写接口的方法
<font color="#17-7-28|阅:547|来自:白狐广告
数据对接、网站接口...在开发网站的过程中经常会提及这样的问题?所谓的网站接口是网站系统中两个独立的服务器进行信息交换的共享边界。
1、服务器之间的共享边界
简单解释,一个网站其实就是一个服务器,网站所展示的新闻、数据、信息都存在自己的服务器中。
但是当两个网站,也就是两台服务器之间,需要数据传输,或者共享某些数据时,就需要一条通道或是一种方法,让两台服务器进行数据交互。
图中的内容,就是我们所说的共享边界,也就是接口内容(接口位于展示内容的A服务器中,提供访问通道和方法)
比较基础的只有两种服务器接口形式,httpservice和webservice,传输数据的格式有json、xml、vdf等
加密方式有sha1、sha256、md5、base64带密钥验签&
2、实用性强的范例接口
(1)、基于oauth2.0的单点登录
当你的网站,需要QQ、微信等第三方账号的登录功能时,如何验证这个用户在QQ和微信中是有账号的呢?
首先,QQ和微信是不会将用户的用户名和密码发给你的网站的,这是非常不安全的。
所以,双方需要验证一些共同信息,这就是签名。
举例说明一下,微信的消息处理。
(2)、jquery的ajax跨域数据传输
当你旗下的两个网站,需要一个互通的数据进行共用时,就需要一种方式进行访问(这种数据一般可以对外公开播放,也都是需要公布并让其他用户能访问的信息)
当你需要跨域的时候,那就需要使用服务器语言进行获取(php、java等)。
如果你还是坚持要用javascript,觉得这样获取速度上有优势,那请使用jsonp(记得jsonp的格式和json是不一样的,前面是有function的)。
调用接口都要有一个接口的地址,我们用网上免费的天气预报接口,只是为了学习接口的使用,并不保证准确。目前,准确的接口都已经收费了。我找到的免费地址是:http://www.weather.com.cn/data/sk/.html 。然我们来用这个地址来完成学习吧。
PHP调用JSON接口,有以下五个步骤:
第一步、声明页面编码,UTF-8:
header("Content-type: text/ charset=utf-8");
第二步、通过curl返回json字符串:
通过curl函数获取返回json字符串
第三步、把返回的字符串转化为php变量:
第四步、把字符串转化为数组:
用到数组转化函数:
调用字符串转函数。
以下部分是测试输出:
前台显示结果:
第五步、调用数组元素:
通过这个二维数组,获取相应的信息。
前台显示:
从上面的例子中可以看出,一个简单的接口,其实调用起来还是很方便。通过上面的5个步骤,就可以实现。上面的例子中有两个重点,第一个就是crul函数的调用;第二个就是json字符串转化为数组。
下面介绍如何在PHP中编写接口
一、先简单回答两个问题:
1、PHP&可以开发客户端?
答:不可以,因为PHP是脚本语言,是负责完成B/S架构或C/S架构的S部分,即:服务端的开发。(别去纠结GTK、WinBinder)
2、为什么选择PHP&作为开发服务端的首选?
答:跨平台(可以运行在UNIX、Linux、WINDOWS、Mac OS下)、低消耗(PHP消耗相当少的系统资源)、运行效率高(相对而言)、MySQL的完美搭档,本身是免费开源的。
二、如何使用PHP开发API(ApplicationProgramming Interface,应用程序编程接口)呢?
做过API&的人应该了解,其实开发API&比开发WEB&更简洁,但可能逻辑更复杂,因为API&其实就是数据输出,不用呈现页面,所以也就不存在MVC(API&只有M&和C),
1、和WEB&开发一样,首先需要一些相关的参数,这些参数,都会由客户端传过来,也许是GET&也许是POST,这个需要开发团队相互之间约定好,或者制定统一规范。
2、有了参数,根据应用需求,完成数据处理,例如:任务进度更新、APP内购、一局游戏结束数据提交等等。
3、数据逻辑处理完之后,返回客户端所需要用到的相关数据,例如:任务状态、内购结果、玩家信息等等数据怎么返给客户端?直接输出的形式,如:JSON、XML、TEXT&等等。
4、客户端获取到你返回的数据后,在客户端本地和用户进行交互。
临时写的一个简单API&例子:
$output = array();
$a = @$_GET['a'] ? $_GET['a'] : '';
$uid = @$_GET['uid'] ? $_GET['uid'] : 0;
if (empty($a)) {
$output = array('data'=&NULL, 'info'=&'白狐建站!', 'code'=&-201);
exit(json_encode($output));
if ($a == 'get_users') {
//检查用户
if ($uid == 0) {
$output = array('data'=&NULL, 'info'=&'The uid is null!', 'code'=&-401);
exit(json_encode($output));
//假设$mysql&是数据库
$mysql = array(
10001 =& array(
'uid'=&10001,
'nickname' =& 'wang',
'email'=&'@qq.com',
'gold'=&1500,
'powerplay'=& array('2xp'=&12,'gem'=&12,'bingo'=&5,'keys'=&5,'chest'=&8),
'gems'=& array('red'=&13,'green'=&3,'blue'=&8,'yellow'=&17),
'ctime'=&,
'lastLogin'=&,
'level'=&19,
'exp'=&16758,
10002 =& array(
'uid'=&10002,
'vip'=&50,
'nickname' =& 'dalu',
'email'=&'',
'qq'=&NULL,
'gold'=&14320,
'powerplay'=& array('2xp'=&1,'gem'=&120,'bingo'=&51,'keys'=&5,'chest'=&8),
'gems'=& array('red'=&13,'green'=&3,'blue'=&8,'yellow'=&17),
'ctime'=&,
'lastLogin'=&,
'level'=&112,
'exp'=&167588,
10003 =& array(
'uid' =& 10003,
'vip' =& 5,
'nickname' =& 'hb0317',
'email' =& '',
'qq' =& NULL,
'gold' =& 1541,
'powerplay'=& array('2xp'=&2,'gem'=&112,'bingo'=&4,'keys'=&7,'chest'=&8),
'gems' =& array('red'=&13,'green'=&3,'blue'=&9,'yellow'=&7),
'ctime' =& ,
'lastLogin'=& ,
'level' =& 10,
'exp' =& 1758,
$uidArr = array(,10003);
if (in_array($uid, $uidArr, true)) {
$output = array('data' =& NULL, 'info'=&'The user does not exist!', 'code' =& -402);
exit(json_encode($output));
//查询数据库
$userInfo = $mysql[$uid];
//输出数据
$output = array(
'data' =& array(
'userInfo' =& $userInfo,
'isLogin' =& true,//是否首次登陆
'unread' =& 4,//未读消息数量
'untask' =& 3,//未完成任务
'info' =& 'Here is the message which, commonly used in popup window', //消息提示,客户端常会用此作为给弹窗信息。
'code' =& 200, //成功与失败的代码,一般都是正数或者负数
exit(json_encode($output));
} elseif ($a == 'get_games_result') {
die('您正在调get_games_result&接口!');
} elseif ($a == 'upload_avatars') {
die('您正在调upload_avatars&接口!');
复制代码,点击测试(对于客户端而言,也是直接调用这样的地址):http://www.internetzg.com/api/test/index.phphttp://www.ezhi.net/api/test/index.php?a=get_usershttp://www.internetzg.com/api/test/index.php?a=get_users&uid=10001http://www.internetzg.com/api/test/index.php?a=get_users&uid=10002http://www.internetzg.com/api/test/index.php?a=get_users&uid=10003
三、实际项目中,我们在开发API&应该注意的几个事项(仅供参考):
1、单文件实现多接口的形式有很多种,例如:if..elseif..&或switch或动态方法(也就是TP的这种访问函数体的形式)
2、对于数据的输出最好用json,json具有相当强大的跨平台性,市场上各大主流编程语言都支持json解析,json正在逐步取代xml,成为网络数据的通用格式
3、接口安全,一定要增加接口验证。例如,客户端和服务端针对不同接口统一做好加密方式,服务端在对于每次接口需要都要进行验证。以保证防止接口被恶意刷新或黑客恶意调用,尤其是大型商业应用。
4、对于线上的API&必须保证所有接口正常且关闭所有的错误信息=& error_reporting(0),在输出JSON&时,不能有任何其它输出,否则,客户端将解析数据失败,直接Crash!
5、开发API&和WEB&有一定的区别,如果是WEB&的话,可能代码出错了,不会导致特别严重的错误,也许只是导致数据写入和查询失败,也许导致WEB&的某个部分错位或乱码。但如果是API,直接Crash!
6、做接口开发,不建议使用框架开发,原因概括起来有两点
1)客户端一般对服务端的响应速度有极高要求,因此,使用最原生态的PHP&完成接口开发,是最高效的,假如用到了框架,还需要加载各种不需要多余的文件,就好比夏天穿了件冬天的衣服。试想,你在玩手机的时候,使用一个应用随便一个操作,等半天才有动静,你受的了吗?
2)就是上面第4点提到的,框架对于WEB开发,是件很幸福的事,但对于API而言,你实在不敢想象它会给你出什么岔子!最后你将痛苦不堪~~因为很多框架都是为WEB&诞生的(我也很期待有一天能看到专门为开发API&而生的框架或者扩展)这个也有人纠结,接口效率与稳定性,还得看编码的人,有的人可能写的还不如框架跑的快,也有人觉得用框架没什么问题,这里只是建议,关键看自己的实际情况,同时建议代码上线前压测一下说到这。
最后说一下,腾讯微博淘宝等开放平台,其实那些开放平台,所谓的开放,就是给你提供一个这样的接口,你根据他们提供的技术文档,按他们制定的格式和要求,调它们提供的接口文件(一般都是返回JSON或者XML),你就可以获取到他们的相关信息,例如:QQ用户基本信息、淘宝店铺、商品消息等等。然后在根据这些消息,在你的应用里完成交互。其实,ajax&也是调用API&的接口
www.internetzg.com Copyright
| 以上内容白狐广告保留解释权,任何个人或单位不得抄袭COPY本公司网站内容,违者必究。
↑上一篇文章:
& & ↓下一篇文章:
友情链接:
网站最佳分辨率为 京ICP备号
白狐广告服务电话:010- 
技术 业务 售后 优化
网站建设,北京网站建设,手机建站,北京网站建设公司&北京白狐广告有限责任公司 版权所有
白狐广告公司地址:北京市朝阳区朝阳路8号朗廷大厦A座312室 邮编:100024您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于PHP的免费快递接口对接文档【参考】.docx 19页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
&#xe600;下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
基于PHP的免费快递接口对接文档在线下单接口接口规则 (1)、订单编号(OrderCode)不可重复提交,重复提交系统会返回具体错误代码。 (2)、支持主流快递公司在线下单,请联系技术人员(联系方式请看文档尾部)。 (3)、接口只支持Json格式参数,接口指令1001。只支持POST请求方式,utf-8编码。(4)、接口提供:快递鸟(5)、支持增值服务,保价、代收货款、货款直退、货款垫付等。(6)、测试地址:http://testapi.kdniao.cc:8081/api/oorderservice/http://testapi.kdniao.cc:8081/api/oorderservice/ 正式地址:http://api.kdniao.cc/api/oorderservice系统级输入参数参数名称类型是否必须描述RequestDataStringR请求内容,JSON格式,须和DataType一致EBusinessIDStringR电商IDRequestTypeStringR请求指令类型:1001 DataSignStringR数据内容签名DataTypeStringO请求、返回数据类型:2-json;应用级输入参数参数名称类型是否必须描述WarehouseIDStringO仓库标识(备用字段)WarehouseAddressStringO仓库地址(备用字段)CallBackStringO商户标识(备用字段)MemberIDStringO会员标识(备用字段)ShipperCodeStringR快递公司编码LogisticCodeStringO快递单号OrderCodeStringR订单编号MonthCodeStringC月结编码PayTypeIntR邮费支付方式:1-现付,2-到付,3-月结,4-第三方支付ExpTypeIntR快递类型:1-标准快件CostDoubleO寄件费(运费)OtherCostDoubleO其他费用ReceiverCompanyStringO收件人公司NameStringR收件人TelStringR电话与手机,必填一个MobileStringPostCodeStringO收件人邮编ProvinceNameStringR收件省(如广东省,不要缺少“省”)CityNameStringR收件市(如深圳市,不要缺少“市”)ExpAreaNameStringO收件区(如福田区,不要缺少“区”或“县”)AddressStringR收件人详细地址SenderCompanyStringO发件人公司NameStringR发件人TelStringR电话与手机,必填一个MobileStringPostCodeStringO发件人邮编ProvinceNameStringO发件省(如广东省,不要缺少“省”)CityNameStringR发件市(如深圳市,不要缺少“市”)ExpAreaNameStringO发件区(如福田区,不要缺少“区”或“县”)AddressStringR发件详细地址StartDateStringO上门取货时间段:&yyyy-MM-dd HH:mm:ss&格式化,本文中所有时间格式相同EndDateStringOWeightDoubleO物品总重量kgQuantityIntO件数/包裹数VolumeDoubleO物品总体积m3RemarkStringO备注AddServiceNameString0增值服务名称ValueString0增值服务值CustomerIDString0客户标识(选填)CommodityGoodsNameStringR商品名称GoodsCodeStringO商品编码GoodsquantityIntO件数GoodsPriceDoubleO商品价格GoodsWeightDoubleO商品重量kgGoodsDescStringO商品描述GoodsVolDoubleO商品体积m3返回结果参数参数名称类型必须要求说明EBusinessIDStringR电商用户IDOrderOrderCodeStringR订单编号ShipperCodeStringR快递公司编码LogisticCodeStringO快递单号SuccessBoolR成功与否ResultCodeStringR结果编码ReasonStringO失败原因UniquerRequestNumberStringR唯一标识Json请求示例{ &OrderCode&: &&, &ShipperCode&: &SF&, &PayType&: 1, &MonthCode&: &
正在加载中,请稍后...
19页14页15页13页14页30页17页17页24页12页php和js如何通过json互相传递数据相关问题探讨
转载 & & 作者:
json是js的一种数据格式,可以直接被js解析,php无法直接读取json数据,但是php提供了json_decode函数来对json数据进行转化,从而可以被php脚本访问,今天,站长就和大家一起来探讨这个问题,感兴趣的你可以参考下哦
当我们在结合php和javascript实现某些功能时,经常会用到json。json是js的一种数据格式,可以直接被js解析。而php无法直接读取json数据,但是php提供了json_decode函数来对json数据进行转化,从而可以被php脚本访问。同时,php也提供了json_encode函数来将数据转化成json格式。那么,js中的原生json与php中通过json_encode函数转化后的json是否完全一样呢?今天,站长就和大家一起来探讨这个问题。我们通过php向javascript传递数组数据时,通常要将其转化为json格式,一遍javascript来获取,那么我们就以数组为例,先来看一下两者之间的区别。 1、一维数组 考虑php数组
代码如下: $array=array("1","2","3");
使用json_encode函数转化后,对应的json字符串为
代码如下: ["1","2","3"]。
细心的朋友很快就发现,转化后得到的json字符串,就是javascript中的数组形式,那么是否可以用js的数组访问方式来访问呢? 当然是可以的,但是你将这个json字符串传递给给js时,需要使用urlencode函数对其编码,如:
代码如下: &a href="javascript:show('&?php echo urlencode(json_encode(array('1','2','3')));?&')" id="aj"&访问json&/a&
我们可以用下面的js代码来验证:
代码如下: function show(str){ var jobj=eval_r(decodeURI(str)); alert(jobj[2]); }
大家自己试一试就会发现,是的,可以用js中访问一维数组的方式来访问它。eval方法将json字符串解释为json对象,因为传递过来的是字符串,不转化的话,你得到将是字符串中第三个字符的值。 我们再来对这个一维数组做一下变化,我们发现上面的一维数组没有指定索引,所以它默认为数字索引,现在我们来给它加上键名: 考虑php数组
代码如下: $array=array('a'=&'1','b'=&'2','c'=&'3');
使用json_encode函数转化后,对应的json字符串为
代码如下: {"a":"1","b":"2","c":"3"}
。 我们很快就发现了其中的不同,最明显的就是字符串两端的[]变成了{},那么这个字符串是否也可以按上面那样处理后被js访问呢?我们不防试一试:
代码如下: &a href="javascript:show('&?php echo urlencode(json_encode(array('a'=&'1','b'=&'2','c'=&'3')));?&')" id="aj"&访问json&/a& function show(str){ var jobj=eval_r(decodeURI(str)); alert(jobj.a); }
大家如果动手试了就知道,点击链接后,没有出现弹窗。为什么呢?是PHP生成的json字符串格式不对吗?不是的,这是我们在使用eval函数解释的时候,出错了。把上面的函数代码换成:
代码如下: function show(str){ var jobj=eval_r('('+decodeURI(str)+')'); alert(jobj.a); }
再试试吧!怎么样,可以访问了吧。这告诉我们,在使用eval方法处理带有键名的json字符串时,需要在字符串两端加速括号。至于为什么,站长也不知道,站在巨人的肩膀上而已。 这里要注意,尽管PHP生成的json字符串 {"a":"1","b":"2","c":"3"}被传递给js后无法被直接解释为json格式,但是如果你在js中使用该字符串直接创建json数据,是可以的。试试下面的代码吧:
代码如下: var jobj={"a":"1","b":"2","c":"3"}; alert(jobj.b);
2、二维数组 二维数组在PHP用的应用非常广泛,因此了解二维数组转化后的json格式非常重要。有了上面的例子做铺垫,下面站长就直接给出示例代码:
代码如下: &a href="javascript:show('&?php echo urlencode(json_encode(array(array('1','2','3'))));?&')" id="aj"&访问json&/a& function show(str){ var jobj=eval_r(decodeURI(str)); alert(jobj[0][0]); }
大家运行,会发现,这跟一维数组差不多,这是不带键名的例子,因此在show函数中,去掉字符串两端的括号也是可以的。 下面,我们对二维数组进行一下变化,在第二维中加入键名,请看示例代码:
代码如下: &a href="javascript:show('&?php echo urlencode(json_encode(array(array("a"=&'1',"b"=&'2','3'))));?&')" id="aj"&访问json&/a& function show(str){ var jobj=eval_r('('+decodeURI(str)+')'); alert(jobj[0].a); }
大家运行代码后,发现,这里我们访问json数据的方式有点不一样。上面我们用的是 alert(jobj[0][0]); 而这里我们用的是 alert(jobj[0].a);不要问我为什么,就是这样。这就是json的访问方式。 上面的例子,我们对二维数组的第二维添加了键名,下面我们对第一维添加键名,看看访问方式又有什么不同:
代码如下: &a href="javascript:show('&?php echo urlencode(json_encode(array('k'=&array('1','2','3'))));?&')" id="aj"&访问json&/a& function show(str){ var jobj=eval_r('('+decodeURI(str)+')'); alert(jobj.k[1]); }
这里我们使用的是 jobj.k[1]这样的方式,大家一定已经发现了,只要数组中含有键名,当数组被转化为json格式后,就要使用 json对象.键名 这样的方式来访问该键下的元素,上面的例子中,k键下的数组元素是数字索引,所以在json中使用k[1]这样的方式来访问。 下面,我们对数组的第一维和第二维都添加键名:
代码如下: &a href="javascript:show('&?php echo urlencode(json_encode(array('k'=&array("a"=&'1','2','3'))));?&')" id="aj"&访问json&/a& function show(str){ var jobj=eval_r('('+decodeURI(str)+')'); alert(jobj.k.a); }
正如上面所提到的,只要含有键名,就必须以 json对象.键名 的方式来访问,如果有多个键就要用 json对象.键名.键名... ,不要问我为什么,这就是json的访问方式,只有javascript的发明者能向你解释,他为什么要这样规定。 结论: 1、将php中的数组转化为json字符串传递给js时。如果数组没有指定键名,那么可以直接使用js的eval方法将其转化为json格式供js处理;如果数组中含有键名,那么在使用eval方法处理时,需要使用 () 将json字符串括起来。 2、如果数组中含有键名,转化为json字符串后,在js中要用 json对象.键名.键名... 的方式来访问,如果是数字索引则用 json对象[1] 或者 json对象.键名[1] 这样的方式。 上面,我们主要讨论了,在PHP向js传递json字符串时,需要注意的事项。下面我们再来讨论,用js向php传递json字符串时需要如何处理。 聪明的你肯定已经知道了,只要将json数据用引号引起来作为字符串传递给PHP【通常用ajax进行】就可以用json_decode函数解码了。没错!就是这样!但是在构造json字符串的时候一定要仔细,如果你不经常构造json字符串,那么不妨用 echo json_encode(array('k'=&array("a"=&'1','2','3'))) 这样的方式,查看你需要构造的目标字符串的json格式。这样你就可以在js中根据你想要的结果来构造了! 好了,今天对php和js之间如何使用json数据进行通信就讨论到这里,大家可以自己再试试将php的对象类型进行json编码后如何传递给js。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具php封装json通信接口
创建JSON数据详解:
$arr=array(
'name'=>'david'
echo json_encode($arr);//这个是创建JSON的关键函数
{"id":1,"name":"david"}
注意: json_encode($value);这个函数只能接收utf-8编码的数据。其他&#26684;式数据传给该函数返回
封装通信接口的数据方法
1.通信数据&#26684;式标准:
0111 code 状态码(200,400)如:登录成功200,不成功400
message 提示信息(邮件&#26684;式不对,200代表登录成功)
data 返回数据
class Response{
*按json方式输出通信数据
*@param integer $code 状态码
*@param string $message 提示信息
*@param array $data 数据
*return string 返回&#20540;为json
public static function json($code,$message='',$data=array()){
if(!is_numeric($code)){
return '';
$result=array(
'code'=>$code,
'message'=>$message,
'data'=>$data
echo json_encode($result);}

我要回帖

更多关于 php string json 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信