Ping服务并等待下载文件

时间:2011-11-21 10:54:38

标签: android web-services download ping

Ping远程服务器并等待获取数据

您好我正在构建我的第一个Android应用程序,我已经达到了无法找到解决方案的地步,甚至不知道在Google中搜索什么。

所以问题:我通过应用程序传递一些参数如file_id来ping远程服务器和GET请求。然后服务器以纯文本形式返回确认文件是否存在或错误。错误字符串是$$$ ERROR $$$。实际上,确认是保存文件路径的JSON字符串。如果服务器上不存在该文件,则会生成错误消息并开始下载文件并对其进行处理,通常需要10-30秒。检查文件是否可以下载的最佳方法是什么?我有扩展AsyncTask的DownloadFile类,但在我到达下载文件的点之前,我需要的URL依赖于UI线程中主类中的先前请求。这是一些代码:

public class MainActivity extends Activity {        
        private String getInfo() {
        // Create a new HttpClient and Post Header
        HttpClient httpClient = new DefaultHttpClient();
        HttpGet httpPost = new HttpGet(infoUrl);
        StringBuilder sb = null;
        String data;
        JSONObject jObject = null;

        try {
            HttpResponse response = httpClient.execute(httpPost);
            // This might be equal "$$$ERROR$$$" if no file exists
            sb = inputStreamToString(response.getEntity().getContent());
        } catch(ClientProtocolException e) {
            // TODO Auto-generated catch block
            Log.v("Error: pushItem ClientProtocolException: ", e.toString());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            Log.v("Error: pushItem IOException: ", e.toString());
        }

        // Clean the data to be complaint JSON format
        data = sb.toString().replace("info = ", "");
        try {
            jObject = new JSONObject(data);
            data = jObject.getString("h");
            fileTitle = jObject.getString("title");
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        downloadUrl = String.format(downloadUrl, fileId, data);

        return downloadUrl;
    }
}

所以我的想法是获取内容,如果等于$$$ ERROR $$$进入循环直到JSON数据通过,但我想有更好的解决方案。注意:我无法控制服务器输出,因此必须处理我的内容。

0 个答案:

没有答案