導航:首頁 > 編程語言 > phpwebservice搭建

phpwebservice搭建

發布時間:2024-05-06 06:01:38

1. webservice介面怎麼寫 php

webservice 發展了好久了,有好多種客戶端部署調用方式 ,流程大致是先創建服務,再調用。
下面的代碼是創建一個簡單的Webservice服務.
server.php
<?php

require_once "lib/nusoap.php";
function webserver() {
return "This is a Webservice Server";
}
$soap = new soap_server;
$soap->register('webserver');
$soap->service($HTTP_RAW_POST_DATA);
?>

上面的代碼就創建了一個Webservice服務程序,接下來創建調用Webservice介面的程序:
<?php
require_once "soap/lib/nusoap.php";

$web_url = "";
$client = new soapclient($web_url."/server.php");

$param = array();
$ret = $client->call('webserver', $param, $web_url, $web_url);

echo $ret;

?>
基本上流程就是這樣,當然,實際應用上能寫出很復雜的東西,這個你可以找找相關資料學習一下,上面的php調用Webservice程序是通用的,適合於PHP調用其它ASP.NET及java等各類語言的Webservice介面。一些技術博文里有很詳細的介紹和學習。

參考地址:

2. 如何實現PHP WSDL webservice 讓我的客戶端訪問

下面我們來看Java如何通過WSDL文件來調用這些web service:
注意,以下的代碼並沒有經過真正的測試,只是說明這些情況,不同版本的Axis相差很大,大家最好以apache網站上的例子為准,這里僅僅用於說明其基本用法。
1,直接AXIS調用遠程的web service
我覺得這種方法比較適合那些高手,他們能直接看懂XML格式的WSDL文件,我自己是看不懂的,尤其我不是專門搞這行的,即使一段時間看懂,後來也就忘記了。直接調用模式如下:
import java.util.Date;
import java.text.DateFormat;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.lang.Integer;
import javax.xml.rpc.ParameterMode;

3. PHP如何調用webservice

最近工作中需要用php調用webservice介面,對php不熟,上網搜搜,發現關於用php調用webservice的文章也不多,不少還是php4里用nusoap這個模塊調用的方法,其實php5里已經包含了處理soap的模塊,但是資料太少了,上php官網上查幫助,寫的不是很容易理解,經過多次實踐,終於搞清楚了,php調用webservice還是非常簡單的。下面用一個例子說明:
webservice服務是查詢QQ用戶是否在線
使用php5開發客戶端:
<?php
try{
//$client=newSoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));
$client=newSoapClient("webservices/qqOnlineWebService.asmx?wsdl");
var_mp($client->__getFunctions());
print("<br/>");
var_mp($client->__getTypes());
print("<br/>");

classqqCheckOnline{
var$qqCode="10000";
};
$arrPara=array(newqqCheckOnline);

$arrResult=$client->__Call("qqCheckOnline",$arrPara);//$client->qqCheckOnline($arrPara);

echo$arrResult->qqCheckOnlineResult."<br/>";
}catch(SOAPFault$e){
print$e;
}
?>
代碼確實很簡單吧,創建SoapClient對象時,可以使用保存在本地WSDL文件,也可以使用遠程的地址,後面的array數組里可以帶上很多的參數,具體參數可以查php的SoapClient幫助,這里帶的是字元集編碼,如果調用方法的參數里有中文,一定要指定字元集編碼,否則會出錯。
調用webservice前可以先調用SoapClient的__geunctions()和__getTypes()方法看一下你要調用的webservice暴露的方法,參數和數據類型,需要注意的是傳入的參數名一定要和soapclient裡面定義的一致,否則參數是傳不過去的。
需要使用SoapClient的__soapCall()或__call()方法,具體使用方法可以查php的幫助文檔。如果參數要求是一個結構體,請用類代替,如上面的代碼。
另外發現個問題,如果webservice方法返回的是xml格式的字元串,php接收到以後會自己把數據內容解析出來,而不是xml字元串.

4. PHP如何調用webservice,知道的高手進

SOAP的WebService是可以直接使用的,php有支持SoapClient的,用起來很容易
<?php
$wsdl = "http://192.168.1.2/jaxws/services/test?wsdl";
$client = new SoapClient($wsdl);
$param = array('arg0'=>'arg0','arg1'=>'arg1');
$ret = $client->getUserinfoByID($param);
if ($ret->return){
print_r($ret->return);
}else{
echo 'no user';
}
具體SoapClient需要php的soap支持,看phpinfo里有soap的話就可以了,比如這樣:
soap
Soap Client enabled
Soap Server enabled

Directive Local Value Master Value
soap.wsdl_cache 1 1
soap.wsdl_cache_dir /tmp /tmp
soap.wsdl_cache_enabled 1 1
soap.wsdl_cache_limit 5 5
soap.wsdl_cache_ttl 86400 86400

5. php如何調用webservice應用介紹

Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術,接下來將詳細介紹php如何調用webservice,需要的朋友可以了解下1.1、Web Service基本概念 Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。是:通過SOAP在Web上提供的軟體服務,使用WSDL文件進行說明,並通過UDDI進行注冊。 XML:(Extensible Markup Language)擴展型可標記語言。面向短期的臨時數據處理、面向萬維網路,是Soap的基礎。 Soap:(Simple Object Access Protocol)簡單對象存取協議。是XML Web Service 的通信協議。當用戶通過UDDI找到你的WSDL描述文檔後,他通過可以SOAP調用你建立的Web服務中的一個或多個操作。SOAP是XML文檔形式的調用方法的規范,它可以支持不同的底層介面,像HTTP(S)或者SMTP。 WSDL:(Web Services Description Language) WSDL 文件是一個 XML 文檔,用於說明一組 SOAP 消息以及如何交換這些消息。大多數情況下由軟體自動生成和使用。 UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務供應商和使用者的新項目。在用戶能夠調用Web服務之前,必須確定這個服務內包含哪些商務方法,找到被調用的介面定義,還要在服務端來編制軟體,UDDI是一種根據描述文檔來引導系統查找相應服務的機制。UDDI利用SOAP消息機制(標準的XML/HTTP)來發布,編輯,瀏覽以及查找注冊信息。它採用XML格式來封裝各種不同類型的數據,並且發送到注冊中心或者由注冊中心來返回需要的數據。1.2、XML Web Service的特點 Web Service的主要目標是跨平台的可互操作性。為了實現這一目標,Web Service 完全基於XML(可擴展標記語言)、XSD(XML Schema)等獨立於平台、獨立於軟體供應商的標准,是創建可互操作的、分布式應用程序的新平台。

6. php的webservice怎麼用

Web Service為了異構系統的通信而產生的,它基本的思想就是使用基於XML的HTTP的遠程調用提供一種標準的機制,而省去建立一種新協議的需求。目前進行Web Service通信有兩種協議標准,一種是XML-RPC,另外一種是SOAP。XML-RPC比較簡單,出現時間比較早,SOAP比較復雜,主要是一些需要穩定、健壯、安全並且復雜交互的時候使用。

PHP中集成了XML-RPC和SOAP兩種協議的訪問,都是集中在xmlrpc擴展當中。另外,在PHP的PEAR中,不管是PHP 4還是PHP 5,都已經默認集成了XML-RPC擴展,而且該擴展跟xmlrpc擴展無關,能夠獨立實現XML-RPC的協議交互,如果沒有xmlrpc擴展,建議使用PEAR::XML-RPC擴展。

說的再多都是虛的,下面一個例子說明一切。

首先構造webservice 的服務端:

在服務端,我定義的函數是get( "helloworld" );//hello是傳入的參數

<?php
/**
* 函數:提供給RPC客戶端調用的函數
* 參數:
* $method 客戶端需要調用的函數
* $params 客戶端需要調用的函數的參數數組
* 返回:返回指定調用結果
*/
function rpc_server_func($method, $params) {
$parameter = $params[0];//傳入的函數名稱

$parameter1 = $params[1];//傳入的參數
if ($parameter == "get")
{
$return = "This data by get method".$parameter1 ;
}
else
{
$return = "Not specify method or params";
}
return $return;
}

//產生一個XML-RPC的伺服器端
$xmlrpc_server = xmlrpc_server_create();

//注冊一個伺服器端調用的方法rpc_server,實際指向的是rpc_server_func函數
xmlrpc_server_register_method($xmlrpc_server, "rpc_server", "rpc_server_func");

//接受客戶端POST過來的XML數據
$request = $HTTP_RAW_POST_DATA;

//執行調用客戶端的XML請求後獲取執行結果
$xmlrpc_response = xmlrpc_server_call_method($xmlrpc_server, $request, null);

//把函數處理後的結果XML進行輸出
header("Content-Type: text/xml");
echo $xmlrpc_response;

//銷毀XML-RPC伺服器端資源
xmlrpc_server_destroy($xmlrpc_server);
?>

用php來訪問所定義的webservice的服務端。

<?php
/**
* 函數:提供給客戶端進行連接XML-RPC伺服器端的函數
* 參數:
* $host 需要連接的主機
* $port 連接主機的埠
* $rpc_server XML-RPC伺服器端文件
* $request 封裝的XML請求信息
* 返回:連接成功成功返回由伺服器端返回的XML信息,失敗返回false
*/
function write_file( $string )
{
$fp = fopen( "xml.log","w" );
fprintf( $fp, "%s\n", $string );
fclose( $fp );
}
function rpc_client_call($host, $port, $rpc_server, $request) {

//打開指定的伺服器端
$fp = fsockopen($host, $port);
//echo $fp."<br>";
//構造需要進行通信的XML-RPC伺服器端的查詢POST請求信息
$query = "POST $rpc_server HTTP/1.1\r\nUser_Agent: XML-RPC Client\r\nHost: ".$host."\r\nContent-Type: text/xml\r\nContent-Length: ".strlen($request)."\r\n\r\n".$request."\r\n";
//echo $query."<br>";

//把構造好的HTTP協議發送給伺服器,失敗返回false
if (!fputs($fp, $query, strlen($query)))
{
$errstr = "Write error";
echo $errstr."<br>";
return false;
}

//獲取從伺服器端返回的所有信息,包括HTTP頭和XML信息
$contents = "";
while (!feof($fp))
{
$contents .= fgets($fp);
}

//關閉連接資源後返回獲取的內容
fclose($fp);
return $contents;
}

//構造連接RPC伺服器端的信息
$host = "localhost";
$port = 80;
$rpc_server = "/phpserv.php";//注意 這里一定要有/,切忌。

//把需要發送的XML請求進行編碼成XML,需要調用的方法是rpc_server,參數是get
$request = xmlrpc_encode_request("rpc_server", array( "get", "helloworld"));
//echo $request;
//調用rpc_client_call函數把所有請求發送給XML-RPC伺服器端後獲取信息
$response = rpc_client_call($host, $port, $rpc_server, $request);
write_file ( $response );
//echo "aaa".$response."xxx"."<br>";
//分析從伺服器端返回的XML,去掉HTTP頭信息,並且把XML轉為PHP能識別的字元串
$split = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>";
//echo "split=".$split."<br>";
$xml = explode($split, $response);
$xml = $split . array_pop($xml);
$response = xmlrpc_decode($xml);

/*輸出從RPC伺服器端獲取的信息*/
print_r($response);

?>

例子都有了,其他的就是照搬咯。

7. ThinkPHP如何調用WebService的,需要什麼樣的類,誰能給個詳細的代碼謝謝

可以用import函數.例如, 你可以把phpMailer.class.php放在 ThinkPHP/Library/Org/Util/文件夾下.
要用的時候,

import('Org.Util.phpMailer');

如果用命名空間的話,可以直接new 這個對象

閱讀全文

與phpwebservice搭建相關的資料

熱點內容
手機拍鬼片用什麼app 瀏覽:638
爬山虎app是干什麼用的 瀏覽:503
有哪些寫給程序員的歌 瀏覽:49
成都市命令 瀏覽:993
建立系列文件夾 瀏覽:981
蘋果開機白屏帶文件夾問號 瀏覽:731
體驗服為什麼伺服器會關閉 瀏覽:39
酒店命令 瀏覽:750
中走絲線切割編程視頻 瀏覽:78
衣服壓縮袋手泵原理 瀏覽:714
通達信編程書籍 瀏覽:981
車用壓縮天然氣瓶閥 瀏覽:971
鞋的程序員 瀏覽:259
車的壓縮比是什麼意思 瀏覽:202
網站源碼怎麼傳到文件夾 瀏覽:914
海南壓縮機在哪裡 瀏覽:491
電腦文件夾清晰的文件結構 瀏覽:839
如何把蘋果手機的app轉到安卓 瀏覽:305
java同步並發 瀏覽:249
fw壓縮圖片 瀏覽:258