6 个月前,我开始使用 C#/.NET 进行 Android 开发
我们目前使用的第一个选项是AsyncTask来执行异步任务......在这种情况下它正在使用 Web 服务......
示例代码是
public class AsyncHttpRequestManager extends AsyncTask<String, Boolean, String> {
private final String serviceUrl = "URL HERE";
@Override
protected String doInBackground(String... params) {
try {
DefaultHttpClient client = new DefaultHttpClient();
HttpPut putRequest = new HttpPut(serviceUrl);
putRequest.setHeader("Content-type", "text/plain");
putRequest.setHeader("Accept", "text/plain");
putRequest.setEntity(new StringEntity(params[0]));
HttpResponse response = client.execute(putRequest);
InputStream content = response.getEntity().getContent();
BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
String result = "";
String s = "";
while ((s = buffer.readLine()) != null) {
result += s;
}
return result;
}
catch (UnsupportedEncodingException e) {
Log.e("AsyncOperationFailed", e.getMessage());
e.printStackTrace();
} catch (ClientProtocolException e) {
Log.e("AsyncOperationFailed", e.getMessage());
e.printStackTrace();
} catch (IOException e) {
Log.e("AsyncOperationFailed", e.getMessage());
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String result) {
Log.d("MESSAGE", result);
}
}
我为此写了一篇博文。
此外,为了显示进度/加载对话框,您可能必须覆盖 AsyncTask 中的 onPreExecute 和 onPostExecute 方法。检查文档。
第二种选择是使用loopj 库,它是一个基于异步回调的 Android Http 客户端,构建在 Apache 的 HttpClient 库之上。
利用 loopj 的示例代码是
AsyncHttpClient client = new AsyncHttpClient();
client.setBasicAuth("username","password/token");
client.get("http://www.example.com", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
System.out.println(response);
}
});
随着时间的推移,我们已经在 HttpClient 上创建了我们的助手,因此我建议您使用诸如 loopj 之类的开源库,它可以真正帮助您快速爬上初始步骤。唯一的挑战是,当您来自另一个平台时,您可能会面临使用其他库而不是简单的 AsyncTask 的初始挑战,但如果您有灵活性,那么值得花时间。