phpsoap教程,菜鸟教程 php

本文目录一览:

如何使用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 |

// +————————————————————————+

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 如何设置超时?

在使用soap前,先检查soap的url是否可访问。如为true则继续执行Soap,否则给出超时提醒。

下面是我经常使用的判断网站链接是否可用的函数,希望对你有用。

//判断URL在指定时间内是否有相应

function checkUrl($url, $timeout = 3){

$ret = false;

$handle = curl_init();

curl_setopt($handle, CURLOPT_URL,$url);

curl_setopt($handle, CURLOPT_NOBODY, true);

curl_setopt($handle, CURLOPT_TIMEOUT,$timeout);//设置默认超时时间为3秒

$result = curl_exec($handle);

$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);

curl_close($handle);

if(strpos($httpCode,’2′) == 0){

$ret = true;

}

return $ret;

}

如何给soap添加header头 php

使用php 设置soapHeader时要如下进行,不然发出去的包会变成类似“itemkeyuser/keyvalue23107720/value/item”的格式:  $auth_header = array( ‘user’=$key, ‘password’=$pwd );  // 下面的RequestSOAPHeader 对应 wsdl 定义里面的 xsd:element name=”RequestSOAPHeader”….. $authvalues = new SoapVar($auth_header, SOAP_ENC_OBJECT,”RequestSOAPHeader”,$uri); $header = new SoapHeader($uri, ‘RequestSOAPHeader’, $authvalues); $api = new SoapClient(null,$options); $api-__setSoapHeaders(array($header));不明白的话可以去后盾人看看相关的教学视频。

请大神指教用php发送SOAP请求

使用PHP中的soap类进行soap请求,请求的数据要跟wsdl中的数据类型一致,返回的数据也是由WSDL中定义好了的按照定义去取数据即可。

原创文章,作者:AJYX,如若转载,请注明出处:https://www.506064.com/n/144187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
AJYXAJYX
上一篇 2024-10-24 15:28
下一篇 2024-10-24 15:28

相关推荐

  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • MQTT使用教程

    MQTT是一种轻量级的消息传输协议,适用于物联网领域中的设备与云端、设备与设备之间的数据传输。本文将介绍使用MQTT实现设备与云端数据传输的方法和注意事项。 一、准备工作 在使用M…

    编程 2025-04-29
  • Python3.6.5下载安装教程

    Python是一种面向对象、解释型计算机程序语言。它是一门动态语言,因为它不会对程序员提前声明变量类型,而是在变量第一次赋值时自动识别该变量的类型。 Python3.6.5是Pyt…

    编程 2025-04-29
  • Deepin系统分区设置教程

    本教程将会详细介绍Deepin系统如何进行分区设置,分享多种方式让您了解如何规划您的硬盘。 一、分区的基本知识 在进行Deepin系统分区设置之前,我们需要了解一些基本分区概念。 …

    编程 2025-04-29
  • 写代码新手教程

    本文将从语言选择、学习方法、编码规范以及常见问题解答等多个方面,为编程新手提供实用、简明的教程。 一、语言选择 作为编程新手,选择一门编程语言是很关键的一步。以下是几个有代表性的编…

    编程 2025-04-29
  • Qt雷达探测教程

    本文主要介绍如何使用Qt开发雷达探测程序,并展示一个简单的雷达探测示例。 一、环境准备 在开始本教程之前,需要确保你的开发环境已经安装Qt和Qt Creator。如果没有安装,可以…

    编程 2025-04-29
  • 猿编程python免费全套教程400集

    想要学习Python编程吗?猿编程python免费全套教程400集是一个不错的选择!下面我们来详细了解一下这个教程。 一、课程内容 猿编程python免费全套教程400集包含了从P…

    编程 2025-04-29
  • Python烟花教程

    Python烟花代码在近年来越来越受到人们的欢迎,因为它可以让我们在终端里玩烟花,不仅具有视觉美感,还可以通过代码实现动画和音效。本教程将详细介绍Python烟花代码的实现原理和模…

    编程 2025-04-29
  • PHP怎么接币

    想要在自己的网站或应用中接受比特币等加密货币的支付,就需要对该加密货币拥有一定的了解,并使用对应的API进行开发。本文将从多个方面详细阐述如何使用PHP接受加密货币的支付。 一、环…

    编程 2025-04-29
  • 使用Snare服务收集日志:完整教程

    本教程将介绍如何使用Snare服务收集Windows服务器上的日志,并将其发送到远程服务器进行集中管理。 一、安装和配置Snare 1、下载Snare安装程序并安装。 https:…

    编程 2025-04-29

发表回复

登录后才能评论