异步网络:

1. 添加权限:<uses-permission android:name="android.permission.INTERNET" />

2. 支持的类型

JSONObject
JSONArray
String (HTML, XML)
XmlDom (XML parsing)
XmlPullParser (Large XML files)
byte array
User defined custom type (Transformer)

Bitmap

3. 以Json数据为例,注意,红色部分是随你请求的数据类型一起改变

Stringurl="http://www.google.com/uds/GnewsSearch?q=Obama&v=1.0";

aq.ajax(url, JSONObject. class, newAjaxCallback< JSONObject>(){

@Override
public voidcallback(Stringurl, JSONObjectjson,AjaxStatusstatus){

if(json!= null){
// successfulajaxcall,showstatuscodeandjsoncontent
Toast.makeText(aq.getContext(),status.getCode()+":"+json.toString(),Toast.LENGTH_LONG).show();

} else{
// ajaxerror,showerrorcode
Toast.makeText(aq.getContext(),"Error:"+status.getCode(),Toast.LENGTH_LONG).show();
}
}

});

上面的形式也可以写成下面一样,他们是无条件对等

public voidasyncJson(){

// performaGooglesearchinjustafewlinesofcode

Stringurl="http://www.google.com/uds/GnewsSearch?q=Obama&v=1.0";
aq.ajax(url, JSONObject. class, this,"jsonCallback");

}

public voidjsonCallback(Stringurl, JSONObjectjson,AjaxStatusstatus){

if(json!= null){
// successfulajaxcall
} else{
// ajaxerror
}
}


再举一个使用AQuery的XmlDom解析xml的例子,如果XML过大,使用XMLPullParser

public voidxml_ajax(){
Stringurl="https://picasaweb.google.com/data/feed/base/featured?max-results=8";
aq.ajax(url, XmlDom. class, this,"picasaCb");
}

public voidpicasaCb(Stringurl, XmlDomxml,AjaxStatusstatus){
// 返回一系列为entry的结点,并把其add进list
List<XmlDom>entries=xml.tags("entry");
List<String>titles= newArrayList<String>();

StringimageUrl= null;

for(XmlDomentry:entries){
titles.add(entry.text("title")); //循环把第一个结点为title的文本放进title
imageUrl=entry.tag("content","type","image/jpeg").attr("src");//把第一个结点为content,属性为type,属性值为image/jpeg的src属性值赋予给imageUri
}

aq.id(R.id.image).image(imageUrl);
}


4. 如果你想指定保存文件的位置,使用download方法

String url = "https://picasaweb.google.com/data/feed/base/featured?max-results=16";       

File ext = Environment.getExternalStorageDirectory();
File target = new File(ext, "aquery/myfolder/photos.xml");

aq.progress(R.id.progress).download(url, target, new AjaxCallback<File>(){

public void callback(String url, File file, AjaxStatus status) {

if(file != null){
showResult("File:" + file.length() + ":" + file, status);
}else{
showResult("Failed", status);
}
}
});

5. 自定义类型(文档例子是gson数据使用对象解析),详细见文档

6. 使用Http Post (Multiple)

private void aync_multipart(){

    
String url = "https://graph.facebook.com/me/photos";

Map<String, Object> params = new HashMap<String, Object>();
params.put("message", "Message");

//Simply put a byte[] to the params, AQuery will detect it and treat it as a multi-part post
byte[] data = getImageData();
params.put("source", data);

//Alternatively, put a File or InputStream instead of byte[]
//File file = getImageFile();
//params.put("source", file);

AQuery aq = new AQuery(getApplicationContext());
aq.auth(handle).ajax(url, params, JSONObject.class, this, "photoCb");

}
7. 使用ajax是很容易达到缓存的              
String url = "http://www.google.com";

// 返回最近15分钟内的缓存副本,如果expire为-1,内容将会立即更新且缓存
long expire = 15 * 60 * 1000;

aq.ajax(url, String.class, expire, new AjaxCallback<String>() {

@Override
public void callback(String url, String html, AjaxStatus status) {
showResult(html);
}

});
8. 使缓存无效
public void callback(String url, JSONObject json, AjaxStatus status) {

if(json != null){
if("1".equals(json.optString("status"))){
//do something
}else{
// 不缓存
status.invalidate();
}
}
}
9. 同步调用: 如果ajax调用是在新开的线程,sync方法能够阻塞线程,直到ajax调用完毕,如果sync方法用在主线程将会引起Exception
String url = "http://www.google.com/uds/GnewsSearch?q=Obama&v=1.0";

AjaxCallback<JSONObject> cb = new AjaxCallback<JSONObject>();
cb.url(url).type(JSONObject.class);

aq.sync(cb);

JSONObject jo = cb.getResult();
AjaxStatus status = cb.getStatus();

更多相关文章

  1. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. Android(安卓)如何使用log4j及注意事项
  6. Android中有关Handler的使用(二)
  7. Android(安卓)PopWindow使用
  8. 迁移到Android(安卓)Studio 3.0
  9. Android中有关Handler的使用(二)

随机推荐

  1. Google Android(安卓)SDK 2.1正式发布
  2. 系出名门Android(3) - 对话框(Dialog)和
  3. Android之BroadcastReceiver
  4. Android中SQLite应用详解
  5. 浅谈Android(安卓)动画,带你进入动画的世
  6. Android(安卓)默认Tab标签大小及间距修改
  7. 在Android上实现WLAN的一点理解
  8. Android调用WebService之服务端实现(一)
  9. android 自定义进度条颜色
  10. Android(安卓)AIDL机制范例解析