本文目录一览:
- 1、php soap扩展做webservice的时候 如何传入数组或者对象参数?
- 2、php数组问题
- 3、php 中 webservice 是如何使用的 调用别人的接口 参数是如何传递的
- 4、php怎样接收整个json数组
php soap扩展做webservice的时候 如何传入数组或者对象参数?
SOAP可以传递数组和对象,比较复杂不便详述。你可以在网上查阅SOAP的规范。SOAP的对象需要定义在wsdl里。这就要求java调用方也定义这些对象。
使用SOAP要注意一个问题:SOAP没有统一的标准,不同语言对SOAP的实现有微小差别,有可能导致不兼容。
编写SOAP的wsdl是件麻烦而且痛苦的事。你可以试试使用第三方库。Yii框架就提供一个强大的SOAP解决方案。你可以通过注释和类,自动生成wsdl。个人不推荐在PHP中使用SOAP,因为PHP不像其他语言类似JAVA、.NET,提供强大的SOAP支持。
你可以考虑轻量级API,也可以考虑XML-RPC。并不比SOAP差,而且很灵活。
望采纳,谢谢!
php数组问题
数据库里输出了n条数据,把n条数据和起来,用逗号分隔
这个问题可以用expolde函数解决
怎样才能让$temp输出 1,2,3,4,5.....这样的格式?
如果$temp数组里没有1,2,3,……的数值,可以用傻办法:
for($i=1;$i=count($temp);$i++){
$temp[$i]['sn']=$i;
}
php 中 webservice 是如何使用的 调用别人的接口 参数是如何传递的
php调用web service还是非常简单的。下面用一个例子说明:
web service服务是查询QQ用户是否在线
使用php5开发客户端:
?php
try {
//$client = new SoapClient("HelloService.wsdl",array('encoding'='UTF-8'));
$client = new SoapClient("webservices/qqOnlineWebService.asmx?wsdl");
var_dump($client-__getFunctions());
print("");
var_dump($client-__getTypes());
print("");
class qqCheckOnline{
var $qqCode = "10000";
};
$arrPara = array(new qqCheckOnline);
$arrResult = $client-__Call("qqCheckOnline",$arrPara);//$client-qqCheckOnline($arrPara);
echo $arrResult-qqCheckOnlineResult . "";
} catch (SOAPFault $e) {
print $e;
}
?
代码确实很简单吧,创建SoapClient对象时,可以使用保存在本地WSDL文件,也可以使用远程的地址,后面的array数组里可以带上很多的参数,具体参数可以查php的SoapClient帮助,这里带的是字符集编码,如果调用方法的参数里有中文,一定要指定字符集编码,否则会出错。
调
用web service前可以先调用SoapClient的__geunctions()和__getTypes()方法看一下你要调用的
web service暴露的方法,参数和数据类型,需要注意的是传入的参数名一定要和soapclient里面定义的一致,否则参数是传不过去的。
需要使用SoapClient的__soapCall()或__call()方法,具体使用方法可以查php的帮助文档。如果参数要求是一个结构体,请用类代替,如上面的代码。
另外发现个问题,如果web service方法返回的是xml格式的字符串,php接收到以后会自己把数据内容解析出来,而不是xml字符串.
php怎样接收整个json数组
PHP接收JSON格式的数据
在API服务中,目前流行采用json形式来交互。
给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。
接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-标准的数据类型。因此,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类的内容无法解析,如果用$_POST数组来接收就会失败!
此时可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 来获取提交的数据
查看手册,可以发现$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的区别:
$_POST:通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量。
$GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。
补充说明:PHP默认识别的数据类型是application/x-标准的数据类型。