Android 는 Android-query 프레임 워 크 를 사용 하여 개발 합 니 다(2)

15569 단어 android
비동기 네트워크:
1.권한 추가:  
2.지원 하 는 타 입 JSONobject
JSONArray
String (HTML, XML)
XmlDom (XML parsing)
XmlPullParser (Large XML files)
byte array
User defined custom type (Transformer)
Bitmap 
3.JSon 데 이 터 를 예 로 들 면 빨간색 부분 은 요청 한 데이터 형식 과 함께 변 경 됩 니 다.
String url = "http://www.google.com/uds/GnewsSearch?q=Obama&v=1.0";
        
        aq.ajax(url, 
JSONObject.
class, 
new AjaxCallback<
JSONObject>() {
                @Override
                
public 
void callback(String url, 
JSONObject json, AjaxStatus status) {
                        
                        
if(json != 
null){
                                
//
successful ajax call, show status code and json content
                                Toast.makeText(aq.getContext(), status.getCode() + ":" + json.toString(), Toast.LENGTH_LONG).show();
                        
                        }
else{
                                
//
ajax error, show error code
                                Toast.makeText(aq.getContext(), "Error:" + status.getCode(), Toast.LENGTH_LONG).show();
                        }
                }
});  
        
위의 형식 도 아래 와 같이 쓸 수 있 는데,그들 은 무조건 대등 하 다. 
public 
void asyncJson(){
        
        
//
perform a Google search in just a few lines of code
        
        String url = "http://www.google.com/uds/GnewsSearch?q=Obama&v=1.0";             
        aq.ajax(url, 
JSONObject.
class, 
this, "jsonCallback");
        
}
public 
void jsonCallback(String url, 
JSONObject json, AjaxStatus status){
        
        
if(json != 
null){               
                
//
successful ajax call          
        }
else{          
                
//
ajax error
        }
}         
AQuery 의 XmlDom 을 사용 하여 xml 를 해석 하 는 예 를 들 어 XML 이 너무 크 면 XMLpull Parser 를 사용 합 니 다.
public 
void xml_ajax(){         
        String url = "https://picasaweb.google.com/data/feed/base/featured?max-results=8";              
        aq.ajax(url,
 XmlDom.
class, 
this, "picasaCb");           
}
public 
void picasaCb(String url,
 XmlDom xml, AjaxStatus status){
//entry 의 결산 점 을 되 돌려 주 고 add 를 list 에 넣 습 니 다.
        List entries = xml.tags("entry");               
        List titles = 
new ArrayList();
        
        String imageUrl = 
null;
        
        
for(XmlDom entry: 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();

좋은 웹페이지 즐겨찾기