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

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

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

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

<?php
	header("Content-Type:text/html;charset=utf-8");
?>
<?php
//数组转换成以'/'分隔的字符串 
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

<?php require("testRestful.php") ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Stict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang = "zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
$func = "GetRoomInfo_ByRoom";
echo "调用接口方法:" . $func . "(xiaoqu_id,room,KeyNumber),结果如下:<hr>";
$params = array("xiaoqu_id" => "1", "room" => "10110105");
$result = http($func,$params);
if ($result === false)
	echo "接口方法执行失败!";
else
	echo "接口方法执行成功!返回结果为:<p>" . $result;

?>
</body>
</html>
执行结果为:


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

DEMEO文件打个包提供下载:http://download.csdn.net/download/xieyunc/9870904

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi 10.1 Berlin是一种强大的开发工具,可用于创建各种桌面和移动应用程序。DataSnap是其集成的一项功能,可以用于开发分布式应用程序和客户端/服务器架构。 在DataSnap开发手册中,您将找到详细的说明和教程,帮助您了解如何使用Delphi 10.1 Berlin的DataSnap功能。手册将提供有关如何创建DataSnap服务器和客户端应用程序的全面指导,以及如何进行数据传输和通信。 首先,手册会引导您创建一个DataSnap服务器应用程序。您将了解到如何使用DataSnap架构来实现服务器和客户端之间的通信,以及如何使用不同的数据传输协议(如TCP/IP或HTTP)来传输数据。手册将详细介绍如何定义DataSnap服务器的接口和方法,并向您展示如何使用它们来处理客户端请求和返回数据。 接下来,手册将介绍如何创建DataSnap客户端应用程序。您将学习如何使用Delphi 10.1 Berlin的工具来连接到DataSnap服务器,并调用服务器端方法。手册将提供一些示例代码和说明,帮助您理解如何使用DataSnap客户端组件进行数据传输和通信。 此外,手册还会介绍一些高级技术,如数据筛选、缓存和安全性。您将了解如何使用DataSnap提供的特性来优化数据传输和提高应用程序的性能。手册还将提供有关如何在DataSnap应用程序中实现安全性措施的指导,以保护您的数据和应用程序免受恶意攻击。 总之,Delphi 10.1 Berlin的DataSnap开发手册提供了全面而详细的指导,帮助您利用DataSnap功能开发分布式应用程序和客户端/服务器架构。手册将介绍DataSnap的基本概念和使用方法,并向您展示如何利用其强大的功能来创建高效的应用程序。无论您是初学者还是有经验的开发人员,都能从手册中获得有价值的知识和技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值