仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 741|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP5中利用Web办事会见J2EE使用法式(2)...

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:16:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
根据功能来进行封装等。很多的不懂,在使用搜索引擎查找,或者请教老师和在老师详细的讲解、指导下,都能顺利解决。j2ee|php5|web|web办事|法式|会见   PHP Weather 客户机

  这一节将创立咱们本人的 PHP Weather 客户机。这里供应了一些代码片断,建议下载完全的客户机和 WSDL 文件。

  用于暗示 Weather Service 的 ext/soap 类是 SoapClient。正如咱们引见 Weather Forecast 使用法式时所会商的,咱们晓得使用办事器在 http://host:port/ItsoWebServer2RouterWeb/wsdl/itso/session/WeatherForecastEJB.wsdl 中供应了 WSDL。咱们利用的是默许端口,而且在作为办事器的盘算机上任务,如许就能够经由过程查找 WSDL 文件创立第一个 SoapClient:

<?php
$soapClient = new SoapClient("http://localhost:9080/" .
"ItsoWebService2RouterWeb/wsdl/itso/session/WeatherForecastEJB.wsdl");
?>
  注重,由于 ext/soap 是内置的,所以,在援用 SoapClient 之前,不需求任何 include 或 require 语句。

  如今已实例化了客户机,还要接洽 Weather 办事,并挪用它的 getForecast 操作。在 WSDL 形式下利用 SoapClient 时,ext/soap 有一种很好的特征,便可以直接援用近程操作,就像它是 SoapClient 本身的函数一样。然而在创立输出参数时需求一点技能。ext/soap 可以供应从 WSDL 中发明的操作和参数的数组:

$functions = $soapClient->__getFunctions();
print_r($functions);
$types = $soapClient->__getTypes();
print_r($types);
  只需求显示与 getForecast 相干的了局,偏重新格局化这些了局,以便利浏览,因而咱们看到以下代码:

getForecastResponse getForecast(getForecast $parameters)

struct getForecast {
dateTime startDate;
int days;
}

struct getForecastResponse {
Weather getForecastReturn;
}

struct Weather {
string condition;
dateTime date;
string windDirection;
int windSpeed;
int temperatureCelsius;
boolean dbflag;
}
  ext/soap 实践上并没无为咱们界说 getForecast 类,咱们必需创立该操作所需求的输出参数数组:

$getForecastParam = array('startDate' =>time(), 'days' => 3);
  然后像 SoapClient 的办法那样挪用该操作:

$forecastResponse = $soapClient->getForecast($getForecastParam);
  最初咱们失掉了前往的 getForecastResponse 对象,它自己是一个 Weather 对象数组,然后在表格中显示了局:

echo "<table border=1 cellpadding=5>";
echo "<tr><th>Date</th><th>Condition</th><th>Temperature</th><th>Wind</th></tr>";
$weatherArray = $forecastResponse->getForecastReturn;
foreach ($weatherArray as $weather) {
echo "<tr>",
"<td>",strftime("%a. %b %d, %Y", strtotime($weather->date)),"</td>",
"<td>$weather->condition</td>",
"<td>$weather->temperatureCelsius</td>",
"<td>$weather->windDirection $weather->windSpeed</td>",
"</tr>";
}
echo "</table>";
  PHP 客户机与 Java 客户机的输入不异,因而咱们晓得圣诞节时代 San Jose 不会下雪……

图 3. PHP WeatherClient

                               
登录/注册后可看大图


  察看 SOAP 流

  咱们胜利地与 Weather 办事获得了接洽,并显示了却果。然而假如呈现毛病,得不到预期的了局,该怎样办?ext/soap 可以显示客户机与办事器之间互换的 SOAP 动静,可以匡助咱们肯定成绩地点。

  只要利用 trace 选项创立 SoapClient 时,才要利用跟踪功效。咱们在 options 数组参数中设置 trace 选项,将该参数传递给 SoapClient 机关函数。咱们将机关函数的利用改成:

$soapClient = new SoapClient("http://localhost:9080/" .
"ItsoWebService2RouterWeb/wsdl/itso/session/WeatherForecastEJB.wsdl",
array('trace' => 1));
  并在挪用 goForecast 以后挪用 trace 办法:

echo "Request :<br>", htmlspecialchars($soapClient->__getLastRequest()), "<br>";
echo "Response :<br>", htmlspecialchars($soapClient->__getLastResponse()), "<br>";
  必定要利用 htmlspecialchars 内置函数对 trace 输入停止编码,由于它将 SOAP xml 分界符转换成特别字符,如 <,如许可以免阅读器将其注释成标志。

  上面是某个恳求的 trace 输入:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://session.itso">
<SOAP-ENV:Body>
<ns1:getForecast>
<ns1:startDate>2004-11-30T13:41:59</ns1:startDate>
<ns1:days>0</ns1:days>
</ns1:getForecast>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
  对应的应对是:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getForecastResponse xmlns="http://session.itso">
<getForecastReturn xmlns:ns-239399687="http://mapping.itso">
<ns-239399687:condition>sunny</ns-239399687:condition>
<ns-239399687:date>2004-11-30T00:00:00.000Z</ns-239399687:date>
<ns-239399687:windDirection>W</ns-239399687:windDirection>
<ns-239399687:windSpeed>18</ns-239399687:windSpeed>
<ns-239399687:temperatureCelsius>6</ns-239399687:temperatureCelsius>
<ns-239399687:dbflag>1</ns-239399687:dbflag>
</getForecastReturn>
</getForecastResponse>
</soapenv:Body>
</soapenv:Envelope>
  假如在开启跟踪功效的情形下运转客户机来搜集这些输入,那末需求将 days 参数设置为 0,只要如许做,SOAP 应对才会输入较少的行。然而咱们碰到了没有意料到的行动。咱们原本希冀 getForecastResponse 和之前一样是一个 Weather 对象数组,然而它应当只要一个元素,而不是 4 个元素。但是,它被转换成了一个复杂的 Weather 对象,咱们必需依据这类行动停止编码,就像您在终究的示例 PHP 客户机代码中看到的那样。这与 Java 客户机的行动有所分歧,在客户机行动中,getForecast 老是前往 Weather 对象数组,不管办事器呼应中有几何个 Weather 对象。SoapClient::_getTypes() 输入并没无为咱们了解这类差别供应足够的细节,因而咱们请求助于 WSDL 文档来懂得完全的接口标准。
  看看西,人家这个编论坛,那个CMS,还有那啥CRM,我啥时候写一个呢?
第二个灵魂 该用户已被删除
沙发
发表于 2015-2-4 10:39:27 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
只想知道 该用户已被删除
板凳
发表于 2015-2-9 22:12:34 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
谁可相欹 该用户已被删除
地板
发表于 2015-2-18 08:59:52 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
再现理想 该用户已被删除
5#
发表于 2015-2-25 23:40:48 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-26 11:44:24 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
透明 该用户已被删除
7#
发表于 2015-3-4 02:16:17 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-13 09:27:16 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
因胸联盟 该用户已被删除
9#
发表于 2015-3-14 13:54:51 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
小魔女 该用户已被删除
10#
发表于 2015-3-19 13:37:17 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
若天明 该用户已被删除
11#
发表于 2015-3-20 22:00:29 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
爱飞 该用户已被删除
12#
 楼主| 发表于 2015-3-27 18:09:53 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
小女巫 该用户已被删除
13#
发表于 2015-3-29 17:24:04 | 只看该作者
做为1门年轻的语言,php一直很努力。
兰色精灵 该用户已被删除
14#
发表于 2015-4-1 15:20:33 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
admin 该用户已被删除
15#
发表于 2015-4-2 20:29:36 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
山那边是海 该用户已被删除
16#
发表于 2015-4-4 03:30:00 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
深爱那片海 该用户已被删除
17#
发表于 2015-4-19 11:29:59 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
简单生活 该用户已被删除
18#
发表于 2015-6-7 01:29:47 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
飘飘悠悠 该用户已被删除
19#
发表于 2015-6-24 20:56:15 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 04:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表