㈠ php soap無法開啟
在windows下開啟soap擴展
在php.ini中去掉extension=php_soap.dll前的分號
將php_soap.dll(在php安裝路徑下可以找到)復制到system32下
重啟伺服器
㈡ php soap 怎麼用,給點建議
實際上,soap基本都是通過http傳遞的。
nusoap使用curl來post或者get信息到webservices,而soap_server和普通的程序類似,接受get或者post信息,但是經過了解析之後,呈現給你的就是規定的信息。
ajax也是類似的道理啊。
㈢ PHP怎麼請求soap。其中要調用的那個方法的參數是這個方法的對象參數。到底該怎麼調用。
header('Content-Type: text/html; charset=UTF-8');
//鏈接
$http='http://xxxxxx?wsdl';
//參數,很重要,之前搞的時候一直傳不了參數過去,原來是這樣的,搞死我了
$params=array('string'=>'xxx','string1'=>'xxxx');
$client = new SoapClient($http,array('encoding'=>'utf-8','cache_wsdl' => 0,'compression'=>true));
$client->soap_defencoding = 'utf-8';
$client->xml_encoding = 'utf-8';
//請求返回的數據
$return = $client->$fun($params);//parameters
㈣ 如何使用PHP調用ArcGIS Server的Soap介面
前一陣子,簡單的學習了一下ArcGIS Server,在開發層次上ArcGIS Server支持兩種協議,一個是老的Soap協議,也就是webservice,另外一種是REST協議,其中REST協議是從ArcGIS Server9.3開始支持的協議,也是ESRI今後只要支持的協議,但是老的Soap協議還繼續支持。該章得內容主要介紹如何使用PHP來調用ArcGIS Server的WebService。
查看ArcGIS Server的SOAP SDK的幫助的時候,會發現所提供的示例代碼只有c#,vb.net和java的,並沒有PHP語言的示例,實際上並不是不支持PHP語言,從PHP toolkits include PHP-SOAP and NuSOAP上可以看出PHP是支持Soap協議的,只不過使用PHP並沒有提供現成的工具可以將WSDL轉換成本地化的類,而.NET SDK提供了Wsdl.exe工具,java提供了Apache Axis工具可以將WSDL中的類型轉換成本地化類。
當使用PHP調用WebService的時候,當輸入的參數是簡單數據類型的時候是沒有任何問題的,返回值類型是類得時候也沒有任何的問題,但是當輸入參數的值類型為某個類得時候,就無法調用了,這些類太多了,自己手寫這些類幾乎是不可能,因此找到一個類似於Wsdl.exe和Apache Axis的工具還是很有必要的,在網上終於搜到一個工具,名字為wsdl2php.php可以實現該功能,其代碼如下所示:
// +------------------------------------------------------------------------+
// | wsdl2php |
// +------------------------------------------------------------------------+
// | Copyright (C) 2005 Knut Urdalen |
// +------------------------------------------------------------------------+
// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
// +------------------------------------------------------------------------+
// | This software is licensed under the LGPL license. For more information |
// | see http://wsdl2php.sf.net |
// +------------------------------------------------------------------------+
ini_set('soap.wsdl_cache_enabled', 0); // disable WSDL cache
//if( $_SERVER['argc'] != 2 ) {
// die("usage: wsdl2php /n");
//}
$wsdl = "liuf:8399/arcgis/services/catchment/MapServer?wsdl";
print "Analyzing WSDL";
try {
$client = new SoapClient($wsdl);
} catch(SoapFault $e) {
die($e);
}
print ".";
$dom = DOMDocument::load($wsdl);
print ".";
// get documentation
$nodes = $dom->getElementsByTagName('documentation');
$doc = array('service' => '',
'operations' => array());
foreach($nodes as $node) {
if( $node->parentNode->localName == 'service' ) {
$doc['service'] = trim($node->parentNode->nodeValue);
} else if( $node->parentNode->localName == 'operation' ) {
$operation = $node->parentNode->getAttribute('name');
//$parameterOrder = $node->parentNode->getAttribute('parameterOrder');
$doc['operations'][$operation] = trim($node->nodeValue);
}
}
print ".";
// get targetNamespace
$targetNamespace = '';
$nodes = $dom->getElementsByTagName('definitions');
foreach($nodes as $node) {
$targetNamespace = $node->getAttribute('targetNamespace');
}
print ".";
// declare service
$service = array('class' => $dom->getElementsByTagNameNS('*', 'service')->item(0)->getAttribute('name'),
'wsdl' => $wsdl,
'doc' => $doc['service'],
'functions' => array());
print ".";
// PHP keywords - can not be used as constants, class names or function names!
$reserved_keywords = array('and', 'or', 'xor', 'as', 'break', 'case', 'cfunction', 'class', 'continue', 'declare', 'const', 'default', 'do', 'else', 'elseif', 'enddeclare', 'endfor', 'endforeach', 'endif', 'endswitch', 'endwhile', 'eval', 'extends', 'for', 'foreach', 'function', 'global', 'if', 'new', 'old_function', 'static', 'switch', 'use', 'var', 'while', 'array', 'die', 'echo', 'empty', 'exit', 'include', 'include_once', 'isset', 'list', 'print', 'require', 'require_once', 'return', 'unset', '__file__', '__line__', '__function__', '__class__', 'abstract', 'private', 'public', 'protected', 'throw', 'try');
㈤ PHP如何啟動soap服務
是不是php_soap.dll文件壞了?另外,php.ini放在伺服器的c:\windows目錄下然後再重啟。
㈥ 請大神指教用php發送SOAP請求
使用PHP中的soap類進行soap請求,請求的數據要跟wsdl中的數據類型一致,返回的數據也是由WSDL中定義好了的按照定義去取數據即可。
㈦ php soap 在windows 如何使用 (php。ini)中都配置好了 變數也加了 就是無法使用
樓上二位,顯然沒搞清楚呀 Windows下和linux可差大了
下面我根據supsite的文摘寫了一下:
當然先要有一套:(如果裝系統是定製了,可以卸載,也可以直接安裝)
httpd-2.0.X.tar.gz
MySQL-client-4.0.20-0.i386.rpm
MySQL-server-4.0.20-0.i386.rpm http: //
php-5.0.X.tar.gz
ZendOptimizer-2.5.3-linux-glibc21-i386.tar.gz
http: // (這個裝不裝都可以加速php用的)
gd-2.0.28.tar.gz
下面開始安裝:
1.安裝MYSQL 伺服器:
#rpm -ivh MySQL-server-4.0.20-0.i386.rpm
#rpm -ivh MySQL-client-4.0.20-0.i386.rpm
mysql就ok了
2.安裝GD庫
# tar -zxf gd-2.0.26gif.tar.gz
# cd gd-2.0.26gif
# ./configure --prefix=/usr/local/gd2 --with-zlib=/usr/local/zlib2/ --with-png=/usr/local/libpng2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype2/ (請指定及格插件的安裝路徑,否則安裝php的時候可能出錯!)
# make
# make install
3.安裝apacha
安裝apache,(php5安裝環境需要apache2.0.46以上版本,下載的時候注意!)
#tar zxvf httpd-2.0.50.tar.gz
#cd httpd-2.0.50
#./configure --prefix=/usr/local/apache2 --enable-mole=so
#make
#make install
4.安裝php
# tar -zxf php5-200411260130.tar.gz
# cd php5-200411260130
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng2/ --with-gd=/usr/local/gd2/ --with-freetype-dir=/usr/local/freetype2/ --enable-trace-vars --with-zlib-dir=/usr/local/zlib2/ -with-mysql=/var/lib/mysql
# make
# make install
# cp php.ini-dist /usr/local/php/lib/php.ini
編輯apache配置文件httpd.conf
用編輯器打開:/usr/local/apache2/conf/httpd.conf
#AddType application/x-tar .tgz
下加一行
#LoadMole php5_mole moles/libphp5.so
AddType application/x-httpd-php .php
如果你搜索其它地方沒有以下這行
LoadMole php5_mole moles/libphp5.so
請把上面的#號去掉
還有找到
DirectoryIndex index.html index.html.var
在後面加 index.php 讓它把index.php做為默認頁
找到
# don't use Group #-1 on these systems!
把下面的用戶名和組改為
User apache
Group apache
再找
#ServerName
把#去掉,後面的IP改成你的IP.
找到
DocumentRoot "/usr/local/apache2/htdocs"
把/usr/local/apache2/htdocs改為你存放網頁文件的路徑
為了讓中文網頁沒亂碼
找到
AddDefaultCharset iso8859-1
把後面的iso8859-1改為gb2312 或者是乾脆off
其他的選項就自己修改吧!或者到 有一個專門的httpd.conf的說明
啟動apache
# /usr/local/apache2/bin/apachectl start
寫一個測試頁放到你網頁目錄下看一下
用ZendOptimizer加速PHP
#tar zxvf ZendOptimizer-2.5.3-linux-glibc21-i386.tar.gz
#cd ZendOptimizer-2.5.3-linux-glibc21-i386
#./install.sh
安裝的時候注意輸入正確的安裝apache的路徑等內容!
安裝完畢,再看看phpinfo頁面的zend選項就發現了!!
這是從弄的,安裝很不容易的,我也試過費了好大好大勁,如果有什麼問題,可以去那個頁面看一下,上面有一些問題的解決方法,Good Luck!!
㈧ 如何讓本機php環境支持soap
將php_soap.dll(在php安裝路徑下可以找到)復制到system32下
重啟伺服器,如果還是不行 你可以看下錯誤日誌,具體什麼問題
㈨ PHP SOAP伺服器不工作問題,怎麼解決
在windows下開啟soap擴展
在php.ini中去掉extension=php_soap.dll前的分號
將php_soap.dll(在php安裝路徑下可以找到)復制到system32下
重啟伺服器