public class OkHttpUtils { private static volatile OkHttpUtils instance; private OkHttpClient client; private Handler handler = new Handler(); private OkHttpUtils() { client = new OkHttpClient.Builder() .addInterceptor(new MyInterceptor()) .build(); } public static OkHttpUtils getInstance() { if (null == instance) { synchronized (OkHttpUtils.class) { if (instance == null) { instance = new OkHttpUtils(); } } } return instance; } public void post(String url, Map<String, Object> map, final CallBack callBack, final Class cls) { FormBody.Builder builder = new FormBody.Builder(); if (map != null && !map.isEmpty()) { for (Map.Entry<String, Object> entry : map.entrySet()) { builder.add(entry.getKey(), (String) entry.getValue()); } } Request request = new Request.Builder() .url(url) .post(builder.build()) .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { callBack.onFailed(e); } }); } @Override public void onResponse(Call call, Response response) throws IOException { String result = response.body().string(); final Object o = GsonUtils.getInstance().fromJson(result, cls); handler.post(new Runnable() { @Override public void run() { callBack.onSuccess(o); } }); } }); }}
present层
public class OrderPresenter { private IView iv; public void attachView(IView iv) { this.iv = iv; } public void getOrders(String id) {//url路径 String url = "https://www.zhaoapi.cn/product/getOrders"; Map<String, Object> map = new HashMap<>(); //拼接字符串 map.put("uid", id); OkHttpUtils.getInstance().post(url, map, new CallBack() { @Override public void onSuccess(Object o) { MessageBean bean = (MessageBean) o; List<Order> data = bean.getData(); if (null != data) { iv.success(data); } } @Override public void onFailed(Exception e) { iv.failed(e); } }, MessageBean.class); } public void detachView() { if (null != iv) { iv = null; } } }mainActivitypublic class MainActivity extends AppCompatActivity implements IView { private RecyclerView rvOrder; private OrderAdapter adapter; private List<Order> list; private OrderPresenter presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rvOrder = (RecyclerView) findViewById(R.id.rv_order); LinearLayoutManager manager = new LinearLayoutManager(this); rvOrder.setLayoutManager(manager); list = new ArrayList<>(); adapter = new OrderAdapter(this, list); rvOrder.setAdapter(adapter); presenter = new OrderPresenter(); presenter.attachView(this); presenter.getOrders("71"); } @Override public void success(List<Order> orders) { list.clear(); list.addAll(orders); adapter.notifyDataSetChanged(); } @Override public void failed(Exception e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show(); } @Override protected void onDestroy() { super.onDestroy(); if (presenter != null) { presenter.detachView(); } } }//两个接口类public interface CallBack { void onSuccess(Object o); void onFailed(Exception e); }public interface IView { void success(List<Order> orders); void failed(Exception e); }recyclerview适配器public class OrderAdapter extends RecyclerView.Adapter<OrderAdapter.ViewHolder> { private Context context; private List<Order> list; public OrderAdapter(Context context, List<Order> list) { this.context = context; this.list = list; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = View.inflate(context, R.layout.item_order, null); ViewHolder holder = new ViewHolder(v); return holder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { int status = list.get(position).getStatus(); switch (status) { case 0: holder.txtStatus.setText("已取消"); break; case 1: holder.txtStatus.setText("待支付"); break; case 2: holder.txtStatus.setText("已支付"); break; } holder.txtTitle.setText(list.get(position).getTitle()); holder.txtPrice.setText(list.get(position).getPrice() + ""); holder.txtTime.setText(list.get(position).getCreatetime()); } @Override public int getItemCount() { if (list == null) { return 0; } return list.size(); } class ViewHolder extends RecyclerView.ViewHolder { private TextView txtStatus; private TextView txtTitle; private TextView txtPrice; private TextView txtTime; private Button btnSee; public ViewHolder(View itemView) { super(itemView); txtStatus = (TextView) itemView.findViewById(R.id.txt_order_status); txtTitle = (TextView) itemView.findViewById(R.id.txt_order_title); txtPrice = (TextView) itemView.findViewById(R.id.txt_order_price); txtTime = (TextView) itemView.findViewById(R.id.txt_order_time); btnSee = (Button) itemView.findViewById(R.id.btn_see_order); } } }
okhttpPost请求模板
最新推荐文章于 2024-03-01 11:22:53 发布
本文将介绍如何使用OkHttp库进行POST请求,包括设置请求参数、发送请求及处理响应,帮助开发者掌握网络请求的基本操作。
366

被折叠的 条评论
为什么被折叠?



