1. 程式人生 > >PHP如何呼叫Delphi開發的DataSnap/Restful介面服務

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>
執行結果為:


該介面方法其實查詢出了後臺資料庫中的如下記錄:

相關推薦

PHP如何呼叫Delphi開發DataSnap/Restful介面服務

前面博主寫過一篇“ASP如何呼叫Delphi開發的DataSnap/Restful介面服務”的文章,有網友反映不知道如何使用PHP來呼叫。 其實PHP呼叫Restful介面服務比ASP更簡單,寫一個例子說明一下。 1、通用介面函式呼叫檔案:testRestful.php

PHP-微信開發之圖靈機器人--天氣介面呼叫

微信開發中,圖靈機器人回覆、天氣、翻譯、美食、地圖、二維碼功能,隨處可見。大小網站、APP都在運用這項技術在專案中。今天簡單介紹一下圖靈機器人回覆,天氣介面呼叫、翻譯介面,希望對朋友們有用。 效果案例: 思路很簡單,首先,token要一致,然後在瀏覽器上跑起來, 回到微信平臺

快速開發php介面服務推薦框架

推薦π框架,一個輕量級PHP開源介面框架,專注於介面服務開發,支援HTTP/SOAP/RPC協議,擁有自動生成的線上文件、多種開發語言的客戶端SDK包以及可重用的擴充套件類庫,可用於快速搭建微服務、RESTful介面或Web Services。 碼雲:https://gite

PHP呼叫內容DES加密的SOAP介面

本文以方倍工作室優惠券介面開發為例,介紹PHP下DES加解密及SOAP介面呼叫的實現過程。 一、基礎概念 DES全稱為Data Encryption Standard,即資料加密標準,是一種使用金鑰加密的塊演算法,1976年被美國聯邦政府的國家標準局確定為聯邦資料處理標準(FIPS),隨後在

php 呼叫 騰訊雲的人臉融合 ai介面

1.登入騰訊AI開放平臺(控制檯) 2.建立應用 3.接入能力 4.開始開發      1)獲取APPID AppKey public $APPID = **********; public $APPKEY = **********;// 應用金鑰

談談Go語言的Restful介面開發

前言: 如今微服務、無伺服器架構大行其道。而API開發是這些話題的主角。 Go語言開發效率要比Java Spring要快一些,效能上比PHP高出一個數量級。尤其是Go語言在併發方便非常的優秀,是接下來值得關注的一門語言。 本人近來學習go語言,想基於Go做Web API,經過調研

c語言開發套路-怎樣快速呼叫別人的一套介面 api模型的抽象

圈出的部分要用直接copy stdio.h中的這個部分 這段程式碼的意思就是 如果是cpp編譯器 請使用c語言的規範去編譯下面的程式碼 假設現在有這樣一個頭檔案 #pragma once //SOCKET_H #ifndef _SOCKETCLIENT_H #endif _S

PHP呼叫百度天氣介面API

//百度天氣介面API $location = "北京"; //地區 $ak = "5slgyqGDENN7Sy7pw29IUvrZ"; //祕鑰,需要申請,百度為了防止頻繁請求 $weatherURL = "http://api.map.baidu.com/telematics/v3/weather?lo

PHP呼叫介面API封裝

 GET: /** * 通過URL獲取頁面資訊 * @param $url 地址 * @return mixed 返回頁面資訊 */ function get_url($url) { $ch = curl_init(); curl_setopt

PHP呼叫微博介面實現微博登入

在平時專案開發過程中,除了註冊本網站賬號進行登入之外,還可以呼叫第三方介面進行登入網站。這裡以微博登入為例。微博登入包括身份認證、使用者關係以及內容傳播。允許使用者使用微博帳號登入訪問第三方網站,分享內容,同步資訊。 1、首先需要引導需要授權的使用者到如下地址: h

dotnet core 開發無縫相容Http和Websocket協議的介面服務

在應用介面開發中往往要針對不同協義開發相應的代理服務,但對於Websocket和http這兩種協議來說就有些不同,從實現上來看Websocket可以說是Http的升級子協議, 兩者在協議處理上基本一致,具體可以在解釋Body上有所不同。FastHttpApi在實現過程完全支援http協議升級成websocke

微信開發 ---呼叫微信掃碼介面

呼叫微信掃碼介面 步驟一:繫結域名 微信公眾號繫結域名 步驟二:引入JS檔案 步驟三:通過config介面注入許可權驗證配置 這個是呼叫微信的重要憑證,你想要掉用微信的介面 必須先得把簽名通過,這個方法直接放到javascript裡 wx.config({

PHP呼叫支付寶支付介面操作步驟

1.首先掃碼登入支付寶個人主頁點選開發平臺 2.點選開發接入,找到開發服務點選沙箱 3.進入沙箱環境 4.應用中選擇電腦網站支付,然後選擇demo下載 5.下載完畢解壓後將檔案複製到WWW目錄下,新建站點,進行訪問 6.回到沙箱應用,開始配置檔案

PHP呼叫Java的hessian介面報錯:Expected 'H'/'C' (Hessian 2.0) or 'c' (Hessian 1.0) in hessian input at -1

出錯提示: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Hessian skeleton invocation failed; nested exceptio

關於Spring--hessian遠端呼叫介面服務配置

maven依賴hessian的jar包如下: <dependency> <groupId>com.caucho</groupId> <artifactId>hessian</artifactId>

WebApi RESTful介面例項及ajax呼叫

例項圖片 WebApi介面原始碼 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using Sys

三種方式實現遠端restful 介面呼叫

1,基本介紹 Restful介面的呼叫,前端一般使用ajax呼叫,後端可以使用的方法比較多,   本次介紹三種:     1.HttpURLConnection實現     2.HttpClient實現     3.Spring的RestTemplate      

基於django的rest api快速開發(只提供一個介面服務

需求:目前我們有一個後臺的python指令碼和前臺的頁面,我們需要提供一個類似tomcat的服務,來使前臺的一個請求,通過我們搭建的服務去呼叫python模型,並最終將處理的結果返回給前臺。一:搭建django rest api 環境首先我們需要有python環境,這是基礎,

Ajax跨域呼叫後臺Restful介面時的JSON轉換方法

類:AjaxExchange 作用:將後臺取到的資料以JSON或HTML的形式返回 package org.sun.com; import java.io.OutputStreamWriter; import java.io.PrintWriter; import jav

微信企業號開發之access_token介面呼叫示例

第一步:建立企業應用 登入企業管理後臺進入“企業應用”頁面,通訊錄管理是企業微信預設整合的應用,可以直接開啟,如果企業需要開發自定義的應用,可點選“新增應用”完成應用的新增和配置,詳細步驟請參見應用概述。 第二步:開啟接收訊息模式 開啟接收訊息模式並不是必須