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数据通过,但我想有更好的解决方案。注意:我无法控制服务器输出,因此必须处理我的内容。