okhttputils java_okhttp-utils用法总结

引用方法

Android Studio

compile 'com.zhy:okhttputils:2.6.2'

Eclipse

下载最新jar:okhttputils-2_6_2.jar

注:需要同时导入okhttp和okio的jar,下载见:https://github.com/square/okhttp.

用法示例

json-server内容

{

"user": {

"username": "Roy",

"password": "123"

},

"users": [

{

"password": "123",

"username": "Roy",

"id": 1

},

{

"password": "12345",

"username": "Tom",

"id": 2

},

{

"password": "54321",

"username": "Jack",

"id": 3

}

]

}

User类

public class User {

public String username ;

public String password ;

public User() {

// TODO Auto-generated constructor stub

}

public User(String username, String password) {

this.username = username;

this.password = password;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

@Override

public String toString()

{

return "User{" +

"username='" + username + '\'' +

", password='" + password + '\'' +

'}';

}

}

GET请求

适用于string对象

String url = "http://192.168.191.1:3000/" + "user"; //url设置成自己的json-server地址

OkHttpUtils

.get()

.url(url)

.build()

.execute(new StringCallback() //使用StringCallback回调String类型数据

{

@Override

public void onError(Request request, Exception e)

{

}

@Override

public void onResponse(String response)

{

//解析出的response为String类型,可以进一步处理

}

});

适用于JavaBean对象

public void getUser(View view)

{

String url = "http://192.168.191.1:3000/" + "user"; //url设置成自己的json-server地址

OkHttpUtils

.get()//

.url(url)//

.build()//

.execute(new UserCallback() { //使用UserCallback回调User类的对象,可自己定义JavaBean对象

@Override

public void onError(Call call, Exception e, int id) {

mTv.setText("onError:" + e.getMessage());

//mTv为TextView打印Error信息

}

@Override

public void onResponse(User response, int id) {

mTv.setText("onResponse:" + response.getPassword());

//mTv为TextView打印response信息

//解析出的response为User类对象,此处使用response.getPassword()来获取password属性

}

});

}

UserCallback

import com.google.gson.Gson;

import com.zhy.http.okhttp.callback.Callback;

import java.io.IOException;

import okhttp3.Response;

public abstract class UserCallback extends Callback

{

@Override

public User parseNetworkResponse(Response response, int id) throws IOException

{

String string = response.body().string();

User user = new Gson().fromJson(string, User.class);

return user;

}

}

适用于List对象

public void getUsers(View view)

{

String url = "http://192.168.191.1:3000/" + "users"; //url设置成自己的json-server地址

OkHttpUtils//

.get()//

.url(url)//

.build()//

.execute(new ListUserCallback() //使用ListUserCallback回调List数组,可自己定义JavaBean对象

{

@Override

public void onError(Call call, Exception e, int id)

{

mTv.setText("onError:" + e.getMessage());

//mTv为TextView打印Error信息

}

@Override

public void onResponse(List response, int id)

{

mTv.setText("onResponse:" + response.get(2).toString());

//mTv为TextView打印response信息

//解析出的response为List数组,此处使用response.get(2).toString()来获取数组中第3个User对象,并用toString方法输出

}

});

}

ListUserCallback

import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;

import com.zhy.http.okhttp.callback.Callback;

import java.io.IOException;

import java.util.List;

import okhttp3.Response;

public abstract class ListUserCallback extends Callback>

{

@Override

public List parseNetworkResponse(Response response,int id) throws IOException

{

String string = response.body().string();

List users = new Gson().fromJson(string, new TypeToken>(){}.getType());

return users;

}

}

POST请求

适用于json字符串

public void postString(View view)

{

String url = "http://192.168.191.1:3000/" + "users"; //url设置成自己的json-server地址

OkHttpUtils

.postString()

.url(url)

.mediaType(MediaType.parse("application/json; charset=utf-8")) //设置post的字符串为json字符串并设置编码

.content(new Gson().toJson(new User("zhy", "123"))) //用Gson将User对象转化为Json字符串的形式作为content

.build()

.execute(new MyStringCallback());

}

MyStringCallback

package Callback;

import android.util.Log;

import com.zhy.http.okhttp.callback.StringCallback;

import okhttp3.Call;

public class MyStringCallback extends StringCallback

{

//MyStringCallback用于向json server处理有关字符串的请求(Json/Http/Https 字符串callback)

@Override

public void onError(Call call, Exception e, int id)

{

e.printStackTrace();

}

@Override

public void onResponse(String response, int id)

{

Log.i("Tag", "MyStringCallback success");

switch (id)

{

case 100:

Log.i("http", "http callback success");

break;

case 101:

Log.i("https", "https callback success");

break;

}

}

}

适用于JavaBean对象

public void postUser(View view)

{

String url = "http://192.168.191.1:3000/" + "user"; //url设置成自己的json-server地址

OkHttpUtils

.post()//

.url(url)//

.addParams("username", "Roy")//设置Post参数

.addParams("password", "123")//设置Post参数

.build()//

.execute(new UserCallback() { //使用UserCallback回调User类的对象,可自己定义JavaBean对象,UserCallback内容同上

@Override

public void onError(Call call, Exception e, int id) {

mTv.setText("onError:" + e.getMessage());

//mTv为TextView打印Error信息

}

@Override

public void onResponse(User response, int id) {

mTv.setText("onResponse:" + response.getPassword());

//mTv为TextView打印response信息,response为刚刚POST的User类对象

//解析出的response为User类对象,此处使用response.getPassword()来获取password属性

}

});

}

待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值