//使用前导入依赖
compile 'com.squareup.okhttp3:okhttp:3.9.0'
package lx.bwie.com.okhttp;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import java.io.IOException;
import java.util.List;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
@SuppressLint("HandlerLeak")
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1){
String s = (String) msg.obj;
show.setText(s);
}
}
};
// String TAG;
private TextView show;
private ListView lv;
private DisplayImageOptions options;
// String str = "";
private List<User.DataBean> list ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
show = (TextView) findViewById(R.id.show);
lv = (ListView) findViewById(R.id.lv);
/* options = new DisplayImageOptions.Builder()
.cacheInMemory(true)//进行内存缓存
.cacheOnDisk(true)//进行sd卡缓存
*//*.showImageOnLoading(R.drawable.ic_stub) // 设置正在下载中的图片
.showImageForEmptyUri(R.drawable.ic_empty) //没有请求地址时
.showImageOnFail(R.drawable.ic_error)//下载错误时*//*
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片质量
.build();
*/
}
//异步get请求
public void AsyncGet(View view){
//异步get请求
//创建okhttpClient 对象,两种任选数据
// OkHttpClient client = new OkHttpClient();
OkHttpClient client = new OkHttpClient.Builder()
// .addInterceptor(new 类())//添加一个拦截器
.build();
/*
//传入参数
//1.addHeader("name:","value")
//2.header是覆盖
//3.创建headers
Headers headers = new Headers.Builder()
.add("name", "value")
.add("name", "value")
.build();
*/
//2.创建Request对象
Request request = new Request.Builder()
.get()//请求方式
.url("http://120.27.23.105/product/getCatagory")//请求地址
.build();
//3.创建Call 对象
Call call = client.newCall(request);
//4.请求网络,execute同步,, enqueue 异步请求
call.enqueue(new Callback() {
//请求失败
@Override
public void onFailure(Call call, IOException e) {
}
//请求成功
@Override
public void onResponse(Call call, Response response) throws IOException {
//response.body().string()本质上是读流的操作
final String res = response.body().string();
Log.d("TAG",res);
/**
* 获取到数据之后把数据展示到UI控件上,因为请求网络是在子线程中,而更新UI是在子线程中进行
* 可以用headler或者runOnUIThread
*/
runOnUiThread(new Runnable() {
@Override
public void run() {
show.setText(res);
/* Gson gson = new Gson();
User user = gson.fromJson(res, User.class);
Log.d("ZZZ",user.getData().size()+"");
list = user.getData();*/
// lv.setAdapter(new MyAdapter());
}
});
}
});
}
/* class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(MainActivity.this, R.layout.item_layout, null);
ImageView img = view.findViewById(R.id.img);
TextView tv = view.findViewById(R.id.tv);
tv.setText(list.get(position).getName());
ImageLoader.getInstance().displayImage(list.get(position).getIcon(),img,options);
return view;
}
}*/
//异步post 请求
public void AsyncPost(View view){
//1.创建okHttpClient对象,两种任选一种
//OkHttpClient client = new OkHttpClient.Builder().build();
OkHttpClient client = new OkHttpClient();
//2.提供post请求需要的body对象
FormBody body = new FormBody.Builder()
.add("moblile","***********")
.add("password","******")
.build();
//创建request 对象
final Request request = new Request.Builder()
.post(body)
.url("http://120.27.23.105/user/login")
.build();
//创建Call对象
Call call = client.newCall(request);
//请求网络 post 异步请求 enqueue
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//请求失败
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//请求成功
//response.body().string()本质上是读取流的操作
String res = response.body().string();
//handler 发送请求,改变UI
Message message = handler.obtainMessage();
message.what = 1;
message.obj = res;
message.sendToTarget();
}
});
}
}
Okhttp 异步get post 请求
最新推荐文章于 2023-11-07 11:54:10 发布