您的位置:首页 > 理论基础 > 计算机网络

android:安卓中5中网络请求库之Vellory OkHttp Retrofit

2015-10-12 19:15 856 查看
文章来自:http://blog.csdn.net/intbird

github:https://github.com/intbird/ANDIntbirdNetWork

0,HttpConnection,HttpClient,AysncHttp;

之前的日志:http://blog.csdn.net/intbird/article/details/38338623

1,Vellory:

------------------------
initVolleyObj();
initVolleyString();
initVolleyImage();
initVolleyImages();
initVolleyNetWorkImage();
initVolleyGson();
------------------------

private void initVolleyObj(){
RequestQueue queue = Volley.newRequestQueue(this);

// 如果不指定method,则 jsonObj参数为null时为GET,不为null时为POST;
// new JsonObjectRequest(ApiConstans.API_URL, getJsonObjParams(),..);
//如果method为GET ,则 jsonObj参数为null;
JsonObjectRequest objectRequest = new JsonObjectRequest(Request.Method.GET, ApiConstans.API_URL, getJsonObjParams(), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
setJsonObjResponse(jsonObject.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
setJsonObjResponse(volleyError.toString());
}
});
queue.add(objectRequest);
queue.start();
}

private JSONObject getJsonObjParams(){
JSONObject jsonObject = new JSONObject();
try{
jsonObject.put("_id", "testinfo");
jsonObject.put("person", "foo");
jsonObject.put("phone", "bar");
}catch (Exception ex){

}
return jsonObject;
}

private void setJsonObjResponse(String message){
TextView textView = (TextView) findViewById(R.id.tv_hello);
textView.setText(message);
}

private void initVolleyString(){
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(ApiConstans.API_URL, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
setJsonObjResponse(s);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
setJsonObjResponse(volleyError.toString());
}
});
queue.add(stringRequest);
queue.start();
}

private void initVolleyImage(){
final ImageView imageView = (ImageView)findViewById(R.id.iv_hello);

RequestQueue queue = Volley.newRequestQueue(this);
ImageRequest imageRequest = new ImageRequest(ApiConstans.API_URL_IMG, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap bitmap) {
imageView.setImageBitmap(bitmap);
}
}, imageView.getWidth(),
imageView.getHeight(),
ImageView.ScaleType.CENTER_CROP,
Bitmap.Config.ARGB_8888,
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
setJsonObjResponse(volleyError.toString());
}
});
queue.add(imageRequest);
queue.start();
}

private void initVolleyImages(){
final ImageView imageView = (ImageView)findViewById(R.id.iv_hello);

RequestQueue queue = Volley.newRequestQueue(this);

final LruCache<String,Bitmap> mImageCache = new LruCache<>(20);
ImageLoader.ImageCache imageCache = new ImageLoader.ImageCache() {
@Override
public Bitmap getBitmap(String s) {
return mImageCache.get(s);
}

@Override
public void putBitmap(String s, Bitmap bitmap) {
mImageCache.put(s,bitmap);
}
};

ImageLoader mImageLoder = new ImageLoader(queue,imageCache);
ImageLoader.ImageListener imageListener =ImageLoader.getImageListener(imageView,
R.drawable.notification_template_icon_bg,
R.drawable.abc_ic_ab_back_mtrl_am_alpha);

mImageLoder.get(ApiConstans.API_URL_IMG, imageListener);
}

private void initVolleyNetWorkImage(){
final NetworkImageView imageView = (NetworkImageView)findViewById(R.id.iv_network_hello);

RequestQueue queue = Volley.newRequestQueue(this);

final LruCache<String,Bitmap> mImageCache = new LruCache<>(20);
ImageLoader.ImageCache imageCache = new ImageLoader.ImageCache() {
@Override
public Bitmap getBitmap(String s) {
return mImageCache.get(s);
}

@Override
public void putBitmap(String s, Bitmap bitmap) {
mImageCache.put(s,bitmap);
}
};

ImageLoader mImageLoder = new ImageLoader(queue,imageCache);
//ImageLoader.ImageListener imageListener =ImageLoader.getImageListener(imageView,
//        R.drawable.notification_template_icon_bg,
//        R.drawable.abc_ic_ab_back_mtrl_am_alpha);

//mImageLoder.get(ApiConstans.API_URL_IMG, imageListener);
imageView.setImageUrl(ApiConstans.API_URL_IMG, mImageLoder);
}

private void initVolleyGson(){
RequestQueue queue = Volley.newRequestQueue(this);

VolleyGsonRequest gsonRequest =  new VolleyGsonRequest(ApiConstans.API_URL, PersonResponse.class, null, new Response.Listener<PersonResponse>() {

@Override
public void onResponse(PersonResponse response) {
setJsonObjResponse(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
setJsonObjResponse(volleyError.toString());
}
});
queue.add(gsonRequest);
queue.start();
}


2 ,OkHttp

----------------
okHttpGET();
okHttpGETAsyc();
okHttpPost();
okHttpPostFile();
----------------
private String okHttpGET() {
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
.url(ApiConstans.API_URL)
.build();
try {
Response response = client.newCall(request).execute();
Reader reder = response.body().charStream();
return response.body().string();
} catch (Exception ex) {
Log.e("intbird", ex.toString());
}

return null;
}

private void okHttpGETAsyc(){
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(ApiConstans.API_URL)
.build();
client.newCall(request)
.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
textView.setText(e.toString());
}

@Override
public void onResponse(Response response) throws IOException {
textView.setText(response.body().toString());
}
});
}

private String okHttpPost() {
OkHttpClient okHttpClient = new OkHttpClient();

RequestBody requestBody = new FormEncodingBuilder()
.add("plat", "android")
.add("from", "client")
.build();

//        RequestBody requestBody = new MultipartBuilder()
//                .type(MultipartBuilder.FORM)
//                .addFormDataPart("title","title")
//                .addFormDataPart("image","filename",RequestBody.create(MediaType.parse("text/x-markdown; charset=utf-8"),new File("")))
//                .build();

Request request = new Request.Builder()
.url(ApiConstans.API_URL)
.post(requestBody)
.build();
try {
Response response = okHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
return response.body().string();
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

private void okHttpPostFile(){
MediaType MEDIA_TYPE = MediaType.parse("text/x-markdown; charset=utf-8");
File file = new File("");

OkHttpClient okHttpClient = new OkHttpClient();

Request request = new Request.Builder()
.url(ApiConstans.API_URL)
.post(RequestBody.create(MEDIA_TYPE,file))
.build();
try {
Response respose = okHttpClient.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
}


3,Retrofit

Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ApiConstans.HOST)
.addConverterFactory(GsonConverterFactory.create())
.build();

RetrofitService service = retrofit.create(RetrofitService.class);
Call<RetrofitMode> data = service.getModeData("p");//p in the path means php
data.enqueue(new Callback<RetrofitMode>() {
@Override
public void onResponse(Response<RetrofitMode> response) {
textView.setText(response.toString() + "\r\n" + response.body().toString());
}

@Override
public void onFailure(Throwable t) {
textView.setText(t.getMessage().toString());
}
});

public interface RetrofitService {

@GET("/{p}/index.php")
Call<RetrofitMode> getModeData(@Path("p")String pOrjType);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: