有两面这个故事中,首先是如何产生合法的,其余的要求,二是如何处理好正确的反应。
当谈到发电的要求,你有3个主要的选择。 首先,你可以产生请求手动,使用php的头功能。 这给你完整的灵活性,在发电的要求,但是否涉及最编码。 其次,你可以使用其中一个php的内置式请求功能,如file_get_contents ( )函数或文件( ) /和fopen ( ) ,进行fread ( ) , fclose ( ) 。 用此方法,有很多详细的信息处理自动由php了,你得到相同的回应。 最后,您可以使用一个定制一流的设计,将被用在空气污染指数的问题。 一般来说,这些类别需要什么多参数清单中,并会返回结果在形式上的一个定制对象或使他们可以通过一个阶层。
发电请手动只是绝招第一次,这之后,代码重用和模块化踢。概念上的功能,这将产生的要求是相当基本。 首先,所有的请求参数都准备以确保有适当的传输。 今后,网址为端点生成,然后被解析,并分解成它的组成部分。 最后,要求本身就是派用插座:
functioncallapi ( $端点, $ devkey元,行动元,类型,为关键字)
(
元=行动用urlencode ( $行动) ;
$型=用urlencode ( $型) ;
元关键字=用urlencode ( $关键字) ;
|
|
三部通过参数的url编码。 这是必要的,以确保它们通过适当超过url的。 在前面的例子,寻求一种"风格" ,是演出;如果搜索了,而是被"式的图书, "空间,将它们所需要的编码,导致作风% 20book 。 我曾忽略编码devkey变数,相信签发当局上台如何,这将用来考虑当创建它们。
美元的url = $端点。 "吗? devkey = $ devkey &行动= $行动&型= $型&关键字= $关键字" ;
元url_info = parse_url ( $的url ) ;
。 $ url_info [ '东道主' ] ;
元径= $ url_info [ '路' ] 。 " " ? 。元url_info [ '质疑' ] ;
元数据= " " ;
这里的url本身产生的,包括现在编码的url参数。 url中需要加以解构了下来,以各组成部分的使用说明,在原始套接字连接。
美元计划生育= 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 ( $计划生育" ,内容类型:应用/的x www的形式进行urlencode \ r \ n " ) ;
fputs ( $计划生育, "内容长度: " 。 strlen (元数据) 。 " \ r \ n \ r \ n " ) ;
fputs ( $计划生育, "元数据" ) ;
在这里,信息所产生的旧法中是最后送到。 第一fputs ( )线发送路径,以所要求的文件,并退居二线,指明主机。
为响应= " " ;
而( !对流进行feof ( $计划生育) )
(
为响应.=和fgets ( $计划生育, 128 ) ;
)
fclose ( $计划生育) ;
名单( $ http_headers元, http_content ) =爆发( " \ r \ n \ r \ n " ,为响应) ;
返回http_content元;
)
最后,公众的反应是检索和内容的反应是回来了。 你知道如何处理的反应,在各节与那一边的事情,在短期内。
利用php的内置式档案的功能,同样的过程就可以完成与少得多典(虽然你这样做有弹性较少) 。 在概念上这个工程的功能,同时由于以前的一个,除了所有档案插座呼吁,取而代之的一声声呼唤,以file_get_contents ( )函数:
functioncallapiquick ( $端点, $ devkey元,行动元,类型,为关键字)
(
元=行动用urlencode ( $行动) ;
$型=用urlencode ( $型) ;
元关键字=用urlencode ( $关键字) ;
美元的url = $端点。 "吗? devkey = $ devkey &行动= $行动&型= $型&关键字= $关键字" ;
为响应= @ file_get_contents ( $的url ) ;
返回元响应;
)
实在没有多少来解释这个例子。 url的编码进行了讨论以前,和单file_get_contents ( )函数呼叫处理所有的魔术队。 该ampersand前面的调用函数是用来镇压任何警告说,可能出现的一个不存在的文件或者url ,因为这些应交由调用函数( file_get_contents ( )将返回假,在这些事例) 。 在预php5环境中,您需要使用fopen ( )函数来代替file_get_contents ( )函数。 一些灵活性,是失去了这个请求类型,因为你不能再订定制头文件或选购的头文件,这可能需要或非常可取取决于空气污染指数与你互动。
由于受欢迎的网络服务的增加,所以将盛行预置班,以处理肮脏的工作,其实是人际交往与服务器。 如果服务你想与互动,有一流的,它是绝对值得探讨。 进入阶级自然会依赖于阶级本身。 它应具有足够的证明文件,并获得可能会没有差别太多,从先前的例子-正是有了多一点错误检查(你希望) 。 东西要牢记的是,很多预置模块开发和维护由第三方的,正因为如此,你也可能要等一段时间后,新特点又释放到空气污染指数为它们成为可与你的阶层。
你如何处理与回应要看哪个办法,送请你选择。 如果你产生的请求,无论是手动或与援助的一个php的内置函数(如file_get_contents ( )函数) ,你也将需要手工处理的反应。 如果你使用的第三党模块,它有自己的界面,以检索结果。
反应所提供的服务器应该是一个xml文件;幸运的是, xml的设计,可以很容易解析。 不幸的是,不管它是如何设计的,手动解析什么,通常不是很好玩。 php5配备了simplexml ,使得处理xml文件轻而易举的。 php4用户没有了simplexml ;但是,有少数的第三党模块一样minixml可说,履行着类似的职能。
一旦你已收到回应,坚持把它变成了simplexml对象应该是一个轻拂。 用以前的图书馆为例,并要求功能,你吃掉你的东西是这样的:
为响应= callapiquick ( ' http://library.example.com/api.php ' , '123 ' , '搜索' ,
'书' , '风格' ) ;
如果( $回应)
(
美元的xml = simplexml_load_string ( $反应) ;
print_r ( $的xml ) ;
)否则
(
回声"错误加载饲料" ;
)
在这里,我们的反应是不假(因而东西,想必xml的,你希望的,被退回) 。 注意到,这个假设是大致相当有效。 当一台服务器提供一个api遇到一个错误,它应该提供误差在尼斯xml格式的文件。 该simplexml_load_string ( )函数有反应,并轮流到一个xml对象,可直接上网,通过迭代,等等。 最后, print_r ( )函数的结果,在一个用户友好的输出显示的内容,对象,显示出在这里:
simplexmlelement对象
(
[要求] = > simplexmlelement对象
(
[ requestid ] = > 123a456
[参数] = > simplexmlelement对象
(
[论点] = >阵列
(
[ 0 ] = > simplexmlelement对象
(
)
[ 1 ] = > simplexmlelement对象
(
)
[ 2 ] = > simplexmlelement对象
(
)
[ 3 ] = > simplexmlelement对象
(
)
)
)
)
[ 回应] = > simplexmlelement对象
(
[ resultcount ] = > 2条
[项目] = >阵列
(
[ 0 ] = > simplexmlelement对象
(
[标题] = >风格的书第一卷一日
[现况] = >出
[持有] = >三
[ copiesonhand ] = > 2条
[作者] = > jon能源部
)
[ 1 ] = > simplexmlelement对象
(
[标题] = >一书的风格第20卷
[现况] = >在
[持有] = > 0
[ copiesonhand ] = >一
[作者] = > jon能源部
)
)
)
)
看产量,一对夫妇的事情,应该立即显而易见的:
了simplexml做了很多真正有用的东西,你得非常快。
由此产生的物体不显示属性(见参数列表下的参数) 。 该数据是在那里,只是没有表现出与print_r ( ) 。
阵列开始计数,在0 (就像其他地方一样,在php中,它的只是要牢记) 。
该项目数组是刚刚乞讨来处理了foreach ( )循环。
同时所有这些资料都记为一对夫妇,快行代码都是这就是需要探讨的内容更加充分。
回声: "你们在网上查看: (元xml的>要求>参数>说法[ 3 ] ->价值) < br>" ;在这里,搜索查询和结果计数介绍,然后结果本身迭代通过。 语法得到一点怪异,在处理阵列(主要表现在当搜索查询印数) ,所以它往往是明智的遍历通过他们明晰。
休息是一种有效的方法查询偏远宣传短片时,才准许请求您的部份交易发生在明确的。 创造休息疑问一样容易的url编码所需的参数,并指明一个端点为号召。 处理其余的反应可以是一个小麻烦;但是,通过利用工具一样了simplexml ,它也可以迅速完成。
Online: 557 users browsing the articles directory
|
|