Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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
立即向android发送php file1响应,然后从file1调用另一个php file2_Php_Android_Httprequest_Httpresponse - Fatal编程技术网

立即向android发送php file1响应,然后从file1调用另一个php file2

立即向android发送php file1响应,然后从file1调用另一个php file2,php,android,httprequest,httpresponse,Php,Android,Httprequest,Httpresponse,我从android调用file1.php,希望它向android发送xml响应,然后立即从file1.php调用file2.php。我还想将一个数组从file1.php发送到file2.php。如何在不延迟向android发送响应的情况下实现这一点,因为android只需要来自file1的响应。但是file2输入是file1的输出。有没有一种方法可以让我将file1的xml输出发送到android,然后立即调用file2 详情: Android:->使用google places api在餐馆附

我从android调用file1.php,希望它向android发送xml响应,然后立即从file1.php调用file2.php。我还想将一个数组从file1.php发送到file2.php。如何在不延迟向android发送响应的情况下实现这一点,因为android只需要来自file1的响应。但是file2输入是file1的输出。有没有一种方法可以让我将file1的xml输出发送到android,然后立即调用file2

详情: Android:->使用google places api在餐馆附近显示

php:->获取google places api附近餐馆的列表并将其发送到android。 紧接着,我想从File1.php调用File2.php,在那里我发送餐厅的参考id(File1的o/p),这样我就可以得到每个餐厅的详细信息

Android代码:

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("latitude",latt));
            nameValuePairs.add(new BasicNameValuePair("longitude", longi));

            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost("http://www.xyz.com/file1.php");

            httpPost.setEntity(new UrlEncodedFormEntity      (nameValuePairs));

            HttpResponse httpResponse = httpClient.execute(httpPost);

            HttpEntity httpEntity = httpResponse.getEntity();
            line = EntityUtils.toString(httpEntity);
File2.php

for(each restaurant)
//get details and do some back end processing.

最重要的是,android应该在file2开始执行之前收到响应。

您不能与现有的请求-响应流并行执行外部php文件(实际上是发出新的http请求)。存在两种可能的解决方案

  • 您可以在服务器上实现一个任务队列(通常是数据库中的一个专用表),因此在通过
    file1.php
    处理请求时,您应该在队列中添加新任务。与主web服务器进程并行,您应该有一个php“守护进程”始终运行,它查找新任务并在后台处理它们(通过
    file2.php
    获取所需的详细信息)。一旦任务准备就绪(或任务的一部分,例如有多条包含详细信息的第一条记录可用),请在队列中对其进行适当标记。Android应用程序应该定期检查新的详细信息,并使用另一个访问点(比如
    file3.php
    )加载它们,该访问点将返回部分或完全执行的任务的可用详细信息。我不知道您使用哪种服务器端框架(如果有的话),但其中一些框架提供了基于
    cron
    的“批处理作业”。但这看起来并不容易。最合适的方法是使用,即服务器应通知您的客户机列表中已发送给客户机的项目的新可用详细信息

  • 您可以将部分控制逻辑移动到Android应用程序中。通过这种方式,它请求一个对象列表,然后在一个循环中发送对对象详细信息的新请求,这些请求通过
    file2.php
    代理到GooglePlaces。换句话说,
    file2.php
    由客户端而不是服务器执行


  • 此外,您可能还应该看看php以外的一些服务器端工具,例如,它更适合实现和(选择其中一个)。

    提供更多详细信息:从一个php文件“调用”另一个php文件的目的是什么,以及“调用”是如何编码的?@Stan:添加了更多详细信息。希望它现在更清晰。提供一些代码。听起来您需要将
    file2.php
    包含到
    file1.php
    中,并在将列表中的每个项目发送到Android应用程序之前调用函数来填写详细信息。@Stan:code已添加。据我所知,include file2.php就像将代码复制粘贴到file1。所以file1处理=file1+file2。我不希望这样,因为文件1花费的时间很少,而文件2花费的时间很多。在file2完成之前,我的android不应该被搁置。您的解释非常清楚解决方案1的复杂性。因此,我计划只使用解决方案2。我只是想确认这在php中是不容易实现的。我得到了我的答案。非常感谢!
    for(each restaurant)
    //get details and do some back end processing.