不像休息,这是相当罕见地看到,请手动生成的,虽然它依然可以做的。 一般来说,肥皂要求,是不是产生了一个通用的工具(如nusoap或梨:肥皂) ,或与应用程序特定阶级或模块。 手册一代是盖在这里(一个很好的了解它如何工作,将在今后有用) ,以及nusoap 。
特定应用工具会被忽视,为一对夫妇的理由。 由定义它们的应用,具体的,所以不是很有用在这方面的通用条。 其次,工具,有不同的介面和功能层面,而为了做这个专题正义的,它需要一个深入的研究。 最后,我坚决的认为,如果你能想出如何使工作与nusoap (或原料,因为这件事) ,你可以得到特定的应用工具,也可以工作。
手册代
发电肥皂请手动,是不是差距太大,发电,其余的请求。 过程中生成的要求和实际转递它是分成两个不同的功能,用于展示目的。
供发电的要求自己,我会选择使用pregenerated字符串,只是通过植入所需的价值观,在运行时。 还有更复杂的选项(如创建文件了simplexml ,或创造,它从无到有,每次运行) ,但他们不是真正需要:
functioncreaterequest ( $ devkey元,行动元,类型,为关键字)
(
元请求= " < ? xmlversion = \ " 1.0 \ "编码= \ " utf - 8 \ "独立= \ "不\ " ? >
<肥皂包膜:信封
xmlns :肥皂包膜= \ " http://schemas.xmlsoap.org/soap/envelope/ \ "
xmlns : xsd = \ " http://www.w3.org/2001/xmlschema \ "
xmlns : xsi的= \ " http://www.w3.org/2001/xmlschema-instance \ " >
< 肥皂包膜:人体>
< devkey xsi的:类型= \ " xsd为: int \ " >元devkey < / devkey >
<行动xsi的:类型= \ " xsd :字符串\ " >为行动< /动作>
<型xsi的:类型= \ " xsd :字符串\ " >元型< /类型>
<关键字xsi的:类型= \ " xsd :字符串\ " >元关键字< /关键字>
< /肥皂包膜:人体>
< /肥皂包膜:信封> " ;
为回报要求;
)
至于你能分辨出,该功能仅作为简单,因为它能够得到的。 注意的是变量没有编码的url ;那是因为他们并没有被送往在url (听起来很明显,但它也容易小姐) 。
其实,呼唤着空气污染指数转交请求涉及借款一些代码从第一次休息的例子,因为要求,将被送到生肉这个时候。
functioncallsoapapi (元数据)
(
美元的url = " http://library.example.com/api/soap/search " ;
元url_info = parse_url ( $的url ) ;
。 $ url_info [ '东道主' ] ;
元径= $ url_info [ '路' ] ;
我刚才已经人口稠密元东道国元及路径变量,在一开始,但也应该清楚。 在一个生产系统,你可以节省数中央处理器周期hardcoding这些元素。
美元计划生育= fsockopen ( $东道主, 80 ) ;
fputs ( $计划生育, "吃到" 。元径。 " http/1.1标准\ r \ n " ) ;
fputs ( $计划生育, "主持人: " 。元主持。 " \ r \ n " ) ;
fputs ( $计划生育" ,接受: * / * \ r \ n " ) ;
fputs ( $计划生育" ,接受-字符:国际标准化组织- 8859 - 1 , utf - 8 ;为q = 0.7 , * ;为q = 0.7 \ r \ n " ) ;
fputs ( $计划生育, "联系:关闭\ r \ n " ) ;
fputs ( $计划生育" ,内容类型:应用/肥皂+ xml的\ r \ n " ) ;
fputs ( $计划生育, "内容长度: " 。 strlen (元数据) 。 " \ r \ n \ r \ n " ) ;
fputs ( $计划生育, "元数据" ) ;
这是座几乎一模一样,以前面的例子。 前面的例子是一个职位的要求,而这是一个get请求,这种改变将取决于空气污染指数,无论你是工作。 内容型包头是不同的,以准确反映您想要发送和这个时候,当然你有元数据发送,所以内容的长度不会0 。
为响应= " " ;
而( !对流进行feof ( $计划生育) )
(
为响应.=和fgets ( $计划生育, 128 ) ;
)
fclose ( $计划生育) ;
名单( $ http_headers元, http_content ) =爆发( " \ r \ n \ r \ n " ,为响应) ;
返回http_content元;
)
这一节也是相同的,其余的例子。 包装两种职能,以取出回应,只是勉强值得一提:
元要求= createrequest ( '123 ' , '搜索' , '书' , '风格) ;
为响应= callsoapapi ( $要求) ;
是不是太辛苦了!
不像休息,你不能只用file_get_contents ( ) ,以达到空气污染指数,因为你需要派遣xml主体与要求。 file_put_contents ( ) wont工作,因为你需要的反应( file_put_contents ( )返回一个int ) ,但也有其他的选择。 梨( http://pear.php.net ) ,例如,有一串http的特定功能,可以采取一些最感头痛的手工制造的要求脱下自己的双手,但仍让你所有的灵活性,你得到同手工创建。
一代nusoap
对于任何事情,除了一杆的节目,我一定会参加推荐会与某种形式的肥皂模块,使你的编码生活更加容易。 虽然,如果你遇到问题,跟踪他们失望了,可有点疼痛。 我喜欢用当地的发展框在发展,所以要的东西开始被麦城,我可以用一个包嗅探器,以研究有关请求/响应,在其原始形式。
在概念上,用nusoap是不是差距太大,从完成任务的手工操作。 对象初始化,有效载荷是创造,并请求派。 关键的区别是, nusoap ,正在尽一切肮脏的工作。
需要('../库/ nusoap.php ' ) ;
为客户=新soapclient ( " http://library.example.com/api/soap/wsdl/ " ,真实) ;
在这里,为客户对象被创建。 有两个选项可供选择当创建一个新的soapclient :您可以指定使用wsdl档案,为服务(设置第二个参数为true ) ,或者指定端点为拨打电话(设置第二个参数,以虚假) 。 只要有可能,我想用的wsdl文件;该nusoap模块可赶上你们的一些错误,这样,并确保不同的请求类型都去到正确的终点。
元params =阵列(
' devkey ' = > '123 ' ,
'行动' = > '搜寻' ,
'型' = > '书' ,
'关键字' = > '风格'
) ;
准备参数传输是一个容易对付一点儿比以前的方法。
美元名字= ' http://library.example.com ' ;
$行动= ' http://library.example.com/api/soap/search ' ;
元方法= " searchrequest " ;
$结果= $客>电话: (元方法,
阵列( ' searchrequest ' = > $ params )
美元名字空间,为行动) ;
最后,在过去数参数设置,并自称是取得了。