php 调用restful接口,PHP如何调用Delphi开发的DataSnap/Restful接口服务

前面博主写过一篇“ASP如何调用Delphi开发的DataSnap/Restful接口服务”的文章,有网友反映不知道如何使用PHP来调用。

其实PHP调用Restful接口服务比ASP更简单,写一个例子说明一下。

1、通用接口函数调用文件:testRestful.php

header("Content-Type:text/html;charset=utf-8");

?>

//数组转换成以'/'分隔的字符串

function http_build_query_delphi($arr)

{

//$arr = array('url'=>'http://www.jb51.net','name'=>'脚本之家','str'=>'PHP教程');

$result = '';

//foreach($arr as $key=>$value){

foreach($arr as $value){

$result .= '/'.$value;

}

if (strlen($result)>0)

$result = substr($result,1); //删除第一个"/"字符

return $result;

}

/**

* [http 调用接口函数]

* @Date 2016-07-11

* @Author GeorgeHao

* @param string $url [接口地址]

* @param array $params [数组]

* @param string $method [GET\POST\DELETE\PUT]

* @param array $header [HTTP头信息]

* @param integer $timeout [超时时间]

* @return [type] [接口返回数据]

*/

function http($func, $params, $method = 'GET', $header = array(), $timeout = 5)

{

define('_SRV','http://localhost:8019/peci/rest/TServerMethods/'); //定义了一个常量,应从配置文件中读取

define('_KEY','91F11212729292F2136DADED3656B6CECECECD3145474855B6'); //应从配置文件中读取

$params["KeyNumber"] = _KEY;//增加一个Key键值和元素

$url = _SRV . $func;

// POST 提交方式的传入 $set_params 必须是字符串形式

$opts = array(

CURLOPT_TIMEOUT => $timeout,

CURLOPT_RETURNTRANSFER => 1,

CURLOPT_SSL_VERIFYPEER => false,

CURLOPT_SSL_VERIFYHOST => false,

CURLOPT_HTTPHEADER => $header

);

/* 根据请求类型设置特定参数 */

switch (strtoupper($method)) {

case 'GET':

//通常$url=http://localhost/netpay/rest/TServerMethod1/GetXQList?xq=1&room=10110105

//$opts[CURLOPT_URL] = $url . '?' . http_build_query($params);

$opts[CURLOPT_URL] = $url . '/' . http_build_query_delphi($params);

//Delphi生成的Restful服务接口函数调用时不是常见?x=值1&y=值2的方式,而是直接/值1/值2的方式,问号?也用/替代了。

//如:$url=http://localhost/netpay/rest/TServerMethod1/GetXQList/1/10110105

break;

case 'POST':

$params = http_build_query($params);

$opts[CURLOPT_URL] = $url;

$opts[CURLOPT_POST] = 1;

$opts[CURLOPT_POSTFIELDS] = $params;

break;

case 'DELETE':

$opts[CURLOPT_URL] = $url;

$opts[CURLOPT_HTTPHEADER] = array("X-HTTP-Method-Override: DELETE");

$opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';

$opts[CURLOPT_POSTFIELDS] = $params;

break;

case 'PUT':

$opts[CURLOPT_URL] = $url;

$opts[CURLOPT_POST] = 0;

$opts[CURLOPT_CUSTOMREQUEST] = 'PUT';

$opts[CURLOPT_POSTFIELDS] = $params;

break;

default:

throw new Exception('不支持的请求方式!');

}

/* 初始化并执行curl请求 */

$ch = curl_init();//如果网站需要安全验证,那么需要执行下面两条命令,否则就不需要。 curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, 'username:password'); curl_setopt_array($ch, $opts); $data = curl_exec($ch); $error = curl_error($ch); curl_close($ch); return $data; } ?>

2、测试文件:test.php

$func = "GetRoomInfo_ByRoom";

echo "调用接口方法:" . $func . "(xiaoqu_id,room,KeyNumber),结果如下:


";

$params = array("xiaoqu_id" => "1", "room" => "10110105");

$result = http($func,$params);

if ($result === false)

echo "接口方法执行失败!";

else

echo "接口方法执行成功!返回结果为:

" . $result;

?>

执行结果为:

0818b9ca8b590ca3270a3433284dd417.png

该接口方法其实查询出了后台数据库中的如下记录:

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值