灵魂腐蚀 发表于 2015-2-4 00:29:46

PHP编程:PHP5中利用Web办事会见J2EE使用法式(3)...

大家如果能懂得“熟能生巧”的道理也就明白了这并不是浪费时间,同时这也可以减轻板主的负担,让他们有时间去处理更难的问题。j2ee|php5|web|web办事|法式|会见   注释 WSDL

  咱们已胜利地挪用了 Weather 办事,然而还没有看过它的 WSDL 文档。WSDL 中的细节要比 SoapClient 公然的多。咱们若何晓得应当在 startDate 参数中放甚么呢?咱们应当希冀从前往的数据中实践失掉甚么?要回覆这些成绩,必需更深切地剖析 WSDL。

  可以从下载局部下载 Weather Forecast 使用法式的 WSDL。假如利用分歧的 Web 办事,只需求在阅读器中翻开响应的 WSDL 文档便可。

  getForecast 操作的 WSDL 是:

<wsdl:operation name="getForecast">
<wsdl:input message="intf:getForecastRequest" name="getForecastRequest"/>
<wsdl:output message="intf:getForecastResponse" name="getForecastResponse"/>
</wsdl:operation>
  个中的 getForecastRequest 动静被界说为:

<wsdl:message name="getForecastRequest">
<wsdl:part element="intf:getForecast" name="parameters"/>
</wsdl:message>
  而 getForecast 布局被界说为:

<element name="getForecast">
<complexType>
<sequence>
<element name="startDate" nillable="true" type="xsd:dateTime"/>
<element name="days" type="xsd:int"/>
</sequence>
</complexType>
</element>
  因而咱们晓得该函数需求两个参数,xsd:dateTime 类型的 startDate 和整数类型的 days。这与咱们所懂得的 SoapClient::_getTypes 函数完整婚配,然而如今咱们还晓得 startDate 可觉得空(nillable)。毫无疑问,假如咱们简化输出参数,那末该函数将以下所示:

$forecastResponse = $soapClient->getForecast(array('startDate'=>Null, 'days'=>3));

  假如明白指定明天的日期,了局会与所指定的完整分歧。

  假如但愿制订其他肇端日期怎样办呢?XML Schema将 dateTime 界说成一种根基类型,依照 ISO 8601 尺度格局化,好比“2004-12-01T00:00:00”。假定但愿懂得三天以后的天色预告,可使用内置函数 strtotime("+3 days") 取得需求的日期,该函数与 time() 函数不异,都前往尺度 UNIX 格局的日期工夫,即暗示从公元编年入手下手到如今的秒数的一个整数。咱们晓得 XML Schema 请求日期采取具有字符串字段的 ISO 8601 格局停止编码,因而在示例客户机中编写了 timeToIso8601 函数,将整很多天期转换成 SOAP 编码界说的格局。但咱们受惊地发明,其实其实不需求如许做,ext/soap 十分伶俐地将整很多天期转化成了需求的字符串字段格局。不管传递的是整数仍是预格局化的字符串,都没有关系,终究传送的 SOAP 动静都是一样的。

  呼应中的日期又若何呢?在回程中,ext/soap 从 SOAP 呼应取得了 dateTime 字段,然而没有做任何格局转换。咱们但愿它前往一个整数,以暗示从公元编年到如今的秒数,但实践上失掉的是依照 ISO 8601 格局化的字符串。因而咱们利用 strtotime 函数将其转化成整数,然后利用 strftime 格局化该整数,以便于暗示。

  Weather Service 按日期供应预告,但它疏忽了 dateTime 编码中的工夫成份。所以咱们没有思索这方面的调剂,假如从运转在分歧时区内的办事中恳求天色预告,那末能够必需如许做。假如但愿进一步懂得时区转换,请参阅参考材料中给出的描写 ISO 8601 尺度的文章。

  如今再回到呼应格局下去。上一节中已经提到 getForecast 前往数据的纷歧致性。WSDL 描写告知咱们 getForecast 前往一个 getForecastResponse 对象,getForecastResponse 可以包括无穷多个称为 Weather 的庞杂类型的列表:

<element name="getForecastResponse">
<complexType>
<sequence>
<element maxOccurs="unbounded" name="getForecastReturn" type="tns2:Weather"/>
</sequence>
</complexType>
</element>

<complexType name="Weather">
<sequence>
<element name="condition" nillable="true" type="xsd:string"/>
<element name="date" nillable="true" type="xsd:dateTime"/>
<element name="windDirection" nillable="true" type="xsd:string"/>
<element name="windSpeed" type="xsd:int"/>
<element name="temperatureCelsius" type="xsd:int"/>
<element name="dbflag" type="xsd:boolean"/>
</sequence>
</complexType>
  WSDL 不答应呈现单位素数组这类特例。不幸的是,当呼应只包括一个 Weather 对象时,ext/soap 没有思索 WSDL 中使用于 getForecastResponse 的 <sequence> 标签,由于这类行动在客户机代码中形成了不用要的庞杂性。

  最初,WSDL 文档还告知 SOAP 客户机可以从收集中的哪一个中央找到该办事:

<wsdl:service name="WeatherForecastEJBService">
<wsdl:port binding="intf:WeatherForecastEJBSoapBinding"
name="WeatherForecastEJB">
<wsdlsoap:address location=
"http://localhost:9080/ItsoWebService2RouterWeb/services/WeatherForecastEJB"/>
</wsdl:port>
</wsdl:service>
不可能吃饭的时候咬了自己一下舌头就从此不吃饭了不是?放下畏惧,继续努力,咱们是来征服它的,而不是被它征服的,振奋起来吧同志。

活着的死人 发表于 2015-2-4 13:14:31

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。

若相依 发表于 2015-2-8 16:06:11

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

飘飘悠悠 发表于 2015-2-22 10:57:21

其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎

金色的骷髅 发表于 2015-3-1 09:45:18

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

山那边是海 发表于 2015-3-5 23:01:05

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

第二个灵魂 发表于 2015-3-13 08:09:52

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

小妖女 发表于 2015-3-14 09:12:24

装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。

飘灵儿 发表于 2015-3-21 01:24:12

为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。

再现理想 发表于 2015-3-21 06:09:22

我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:

莫相离 发表于 2015-4-9 11:11:11

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

精灵巫婆 发表于 2015-4-12 16:13:53

刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。

愤怒的大鸟 发表于 2015-4-13 11:04:19

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

小魔女 发表于 2015-4-18 16:48:39

在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、

只想知道 发表于 2015-4-22 10:07:18

没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。

谁可相欹 发表于 2015-5-1 07:11:18

真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,

老尸 发表于 2015-5-6 17:34:40

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

不帅 发表于 2015-6-12 04:53:56

建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。

深爱那片海 发表于 2015-6-13 21:47:57

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
页: [1]
查看完整版本: PHP编程:PHP5中利用Web办事会见J2EE使用法式(3)...