PHP 调用web service接口(.net开发的接口)
实例代码1:
try {
$this->soapClientObj = new SoapClient(self::URL . '?wsdl', array('connection_timeout' => self::CONNECTION_TIMEOUT));
} catch (Exception $e) {
throw new Exception($e->getMessage(), $e->getCode());
}
实例代码2:
<?php
header ( "Content-Type: text/html; charset=utf-8" );
/*
* 指定WebService路径并初始化一个WebService客户端
*/
$ws = "http://www.webservicex.net/globalweather.asmx?wsdl";//webservice服务的地址
$client = new SoapClient ($ws);
/*
* 获取SoapClient对象引用的服务所提供的所有方法
*/
echo 'SOAP服务器提供的开放函数:';
echo '<pre>';
var_dump($client->__getFunctions());//获取服务器上提供的方法
echo "<hr>";
echo 'SOAP服务器提供的Type:';
print_r($client->__getTypes());//获取服务器上数据类型
echo "<hr>";
echo '执行GetGUIDNode的结果:';
//查询中国北京的天气,返回的是一个结构体
$result=$client->getWeather(array('CityName'=>'beijing','CountryName'=>'china'));
echo $result->GetWeatherResult;//显示结果
?>
运行结果:
对try和catch进行实例说明
eg:
<?php
//创建可抛出一个异常的函数
function checkNum($number) {
if($number>1) {
throw new Exception("Value must be 1 or below");
}
return true;
}
//在 "try" 代码块中触发异常
try {
//If the exception is thrown, this text will not be shown echo 'If you see this, the number is 1 or below';
checkNum(2);
}catch(Exception $e){
//捕获异常
echo 'Message: ' .$e->getMessage();
}
?>
上面代码将获得类似这样一个错误:
Message: Value must be 1 or below
例子解释:
上面的代码抛出了一个异常,并捕获了它:
- 创建 checkNum() 函数。它检测数字是否大于 1。如果是,则抛出一个异常。
- 在 "try" 代码块中调用 checkNum() 函数。
- checkNum() 函数中的异常被抛出
- "catch" 代码块接收到该异常,并创建一个包含异常信息的对象 ($e)。
- 通过从这个 exception 对象调用 $e->getMessage(),输出来自该异常的错误消息
不过,为了遵循“每个 throw 必须对应一个 catch”的原则,可以设置一个顶层的异常处理器来处理漏掉的错误。