Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 调用第三方web服务的有效方法_Php_Android_Ios_Web Services - Fatal编程技术网

Php 调用第三方web服务的有效方法

Php 调用第三方web服务的有效方法,php,android,ios,web-services,Php,Android,Ios,Web Services,我目前在移动应用程序(iOS和Android)中用于检索的信息 现在我的问题是如何设计我的应用程序,使我的应用程序代码不受来自谷歌或任何第三方服务的URL结构变化的影响 目前,谷歌要求我们使用如下URL结构: https://maps.googleapis.com/maps/api/place/search/output?parameters 现在假设我已经将这个URL嵌入到我的代码中,并且Google更改了这个URL,或者我决定使用其他服务,那么一旦代码投入生产,它就需要再次修改我的代码 是

我目前在移动应用程序(iOS和Android)中用于检索的信息

现在我的问题是如何设计我的应用程序,使我的应用程序代码不受来自谷歌或任何第三方服务的URL结构变化的影响

目前,谷歌要求我们使用如下URL结构:

https://maps.googleapis.com/maps/api/place/search/output?parameters
现在假设我已经将这个URL嵌入到我的代码中,并且Google更改了这个URL,或者我决定使用其他服务,那么一旦代码投入生产,它就需要再次修改我的代码

是否有可能以其他方式做到这一点,以便我的应用程序代码能够对任何此类更改保持免疫

我还通过PHP通过自己的服务器将一些内容流式传输并加载到我的应用程序中。 因此,最好先将信息请求发送到我的服务器,然后从谷歌服务器获取这些详细信息,并以它所要求的形式返回给我的代码

图解说明

早些时候我在做这个

我的应用程序->对谷歌服务器的请求->对谷歌服务器的响应->对我的应用程序

现在,我想到了这个结构

我的应用程序->使用所需参数请求我的服务器->请求谷歌服务器或任何我想使用的第三方places API->响应我的服务器->以所需格式请求我的应用程序

我知道这种方法会增加响应的延迟,但它会让控制权掌握在我手中。而且,我可以在多个平台上使用相同的服务器端脚本


有更好的方法吗?

在应用程序加载时通过一次性调用实现解决方案怎么样?换句话说,当应用程序启动并下载这些请求的字符串/协议时,您将拥有某种注册/登录通信。这样,一旦确定了用于请求的格式,您仍然可以获得相当好的性能。

如何实现您的解决方案,但在应用程序加载时使用一次性调用?换句话说,当应用程序启动并下载这些请求的字符串/协议时,您将拥有某种注册/登录通信。这样,一旦确定了请求使用的格式,您仍然可以获得相当好的性能。

我在访问第三方数据时也遇到过类似的情况,将来访问可能会发生变化,但不会太多,也不会太频繁。我找到的最简单的方法是将URL或任何其他数据放入配置数组中,在我的例子中,该数组加载到
config
对象中。 然后我有一个类
Importer
,它使用
Config
来决定如何获取数据。我的应用程序的其余部分只与
进口商进行对话。
因此,如果URL发生更改,我所需要做的就是在配置数组中更改它


我在访问第三方数据时也遇到过类似的情况,将来访问可能会发生变化,但不会太多,也不会太频繁。我找到的最简单的方法是将URL或任何其他数据放入配置数组中,在我的例子中,该数组加载到
config
对象中。 然后我有一个类
Importer
,它使用
Config
来决定如何获取数据。我的应用程序的其余部分只与
进口商进行对话。
因此,如果URL发生更改,我所需要做的就是在配置数组中更改它


这个问题的标题有点用词不当,因为你承认你愿意为了容错而牺牲性能/效率。我知道我的方法效率会更低。但我不知道这是唯一的方法还是有其他方法可以在不牺牲效率的情况下完成任务。此外,我不知道延迟是否会非常严重。您可以通过服务器路由所有内容,如果您看到的请求频率相对较低,我想您会没事的。但是,如果您有50多个并发请求,并且饱和程度很高(服务经常发出许多请求),我想您可能会发现自己被烧坏了。您想要的是一种更简单的方法来更新一个位于中心的服务URL,该URL也会发送到客户端。你可以通过一个简单的配置文件来实现这一点。问题的标题有点用词不当,因为你承认你愿意牺牲性能/效率来实现容错。我知道我的方法效率会更低。但我不知道这是唯一的方法还是有其他方法可以在不牺牲效率的情况下完成任务。此外,我不知道延迟是否会非常严重。您可以通过服务器路由所有内容,如果您看到的请求频率相对较低,我想您会没事的。但是,如果您有50多个并发请求,并且饱和程度很高(服务经常发出许多请求),我想您可能会发现自己被烧坏了。您想要的是一种更简单的方法来更新一个位于中心的服务URL,该URL也会发送到客户端。你可以用一个简单的配置文件来实现这一点,如果我想控制URL,它就可以工作了。但是,如果返回JSON的格式也发生了变化,或者我使用了另一个返回完全不同JSON格式的服务,那该怎么办呢?因此,只要在应用程序的一次初始调用中输入所有这些详细信息,您仍然可以通过不通过服务器调用所有内容来减少主要开销。无论你能解析/转换什么,服务器端都可以转换为应用端,节省你一些网络时间。如果我想控制URL,它会起作用。但是,如果返回JSON的格式也发生了变化,或者我使用了另一个返回完全不同JSON格式的服务,那该怎么办呢?因此,只要在应用程序的一次初始调用中输入所有这些详细信息,您仍然可以通过不通过服务器调用所有内容来减少主要开销。无论你能在服务器端解析/转换什么,都可以在应用端转换,并为你节省一些网络时间。