Android中使用OkHttp的五种请求方式及注意事项

文章目录
一、环境说明1、在gradle中引入依赖2、AndroidManifest中开启网络权限3、搭建测试接口4、编写OkHttp工具类

二、发送请求1.发送无参的Get请求2.发送有参的Get请求3.发送无参Post请求4.发送有参Pos请求5.发送Post 的Json数据

一、环境说明
1、在gradle中引入依赖

    implementation 'com.squareup.okhttp3:okhttp:3.12.1'
debugImplementation 'com.squareup.okhttp3:logging-interceptor:3.12.1'

2、AndroidManifest中开启网络权限

<uses-permission android:name="android.permission.INTERNET"/>

注意:

在android9.0以后,Android默认禁止使用Http协议,必须使用Https协议,否则会报错误。

Android中使用OkHttp的五种请求方式及注意事项

所以要使用Http协议的请求必须在AndroidManifest中添加属性,android:usesCleartextTraffic=“true”

3、搭建测试接口

package com.icodingzy.androidback.controller;

import com.icodingzy.androidback.pojo.User;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("user")
public class UserController {
/**
* GET NoParameter
* @return
*/
@GetMapping("getUser")
public Object getUser() {
User user = new User();
user.setId((int) (Math.random()*100));
user.setName("熊顺");
user.setStudentId("201815110110" + (int) (Math.random()*100));
user.setSex("男");
user.setData("Not have Parameter!");
return user;
}

/**
* GET TakeParameter
* @param id userId
* @return
*/
@GetMapping("getParamUser")
public Object getParamUser(Integer id){
User user = new User();
user.setId(id);
user.setName("熊顺");
user.setStudentId("201815110110" + (int) (Math.random()*100));
user.setSex("男");
user.setData("parameter is " + id);
return user;
}
/**
* Post NoParameter
* @return
*/
@PostMapping("postNoParamUser")
public Object postNoParamUser(){
User user = new User();
user.setId((int) (Math.random()*100));
user.setName("熊顺");
user.setStudentId("201815110110" + (int) (Math.random()*100));
user.setSex("男");
user.setData("Not have parameter");
return user;
}
/**
* Post TakeParameter
* @param id userId
* @return
*/
@PostMapping("postParamUser")
public Object postParamUser(Integer id){
User user = new User();
user.setId(id);
user.setName("熊顺");
user.setStudentId("201815110110" + (int) (Math.random()*100));
user.setSex("男");
user.setData("parameter is " + id);
return user;
}
/**
* Post ObjectParameter
* @return
*/
@PostMapping("postObjectParamUser")
public Object postObjectParamUser(@RequestBody User user){
return user;
}
}

接口文档

说明 请求方式 请求参数 请求地址

GET 方式,无参数GET无/user/getUserGET方式,Int参数GETInt(id)/user/getParamUserPost方式,无参数POST无/user/postNoParamUserPost方式,有参数POSTInt(id)/user/postParamUserPost方式,Json化参数POSTObject(id,name,sex,studentId,sex,data)/user/postObjectParamUser
4、编写OkHttp工具类

package com.zhuoyue.travelwh.OkHttpUtil;

import android.app.ProgressDialog;
import android.content.Context;
import android.util.Log;

import com.zhuoyue.travelwh.bean.MsgBean;

import org.greenrobot.eventbus.EventBus;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class OkHttpUtil {
public static ProgressDialog dialog;

/**
* 发送网络请求
* @param url 请求Url
* @param context 上下文对象
* @param body 请求体,如果有请求体则发送Post请求,反之发送Get请求
*/
public static void getHttpRequset(String url, Context context, RequestBody body) {
startDialog(context);
OkHttpClient client = new OkHttpClient();

Request request = null;

//Post请求
if (body != null) {
request = new Request.Builder()
.url(url)
.post(body)
.build();
} else {
//Get请求
request = new Request.Builder()
.url(url)
.get()
.build();
}

client.newCall(request).enqueue(new Callback() {
/*请求失败时的回调*/
@Override
public void onFailure(Call call, IOException e) {
stopDialog();
Log.e("onFailure: ", e.getMessage());
}
/*请求成功时的回调*/
@Override
public void onResponse(Call call, Response response) throws IOException {
stopDialog();
Log.e("ApiData:", response.body().string());
}
});
}

/**
* 显示等待框
* @param context
*/
public static void startDialog(Context context) {
dialog = new ProgressDialog(context);
dialog.setMessage("数据加载。。。");
dialog.setTitle("请稍后");
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}

/**
* 关闭等待框
*/
public static void stopDialog() {
if (dialog != null) {

dialog.dismiss();
}
}
}


二、发送请求
1.发送无参的Get请求

在自己的业务中使用工具类发送网络请求

	//无参接口
private final String url = "http://xxxxxx/user/getParamUser";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

OkHttpUtil.getHttpRequset(url,this,null);
}

打印结果如下
E/ApiData:: {“id”:82,“name”:“熊顺”,“studentId”:“20181511011066”,“sex”:“男”,“data”:“Not have Parameter!”}

Android中使用OkHttp的五种请求方式及注意事项

2.发送有参的Get请求

OkHttp发送Get请求时,请求参数全部放在url中

//有参Get接口
private final String url = "http://xxxxxx/user/getParamUser";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

OkHttpUtil.getHttpRequset(url + "?id=9999",this,null);
}

Android中使用OkHttp的五种请求方式及注意事项

3.发送无参Post请求

发送Post请求时必需要带上请求体

//无参Post接口
private final String url = "http://xxxxxx/user/postNoParamUser";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

RequestBody body = new FormBody.Builder()
.build();
OkHttpUtil.getHttpRequset(url, this, body);
}

Android中使用OkHttp的五种请求方式及注意事项

4.发送有参Pos请求

add中固定为String类型

//有参Post接口
private final String url = "http://xxxxxx/user/postParamUser";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

RequestBody body = new FormBody.Builder()
.add("id","8888")
.build();
OkHttpUtil.getHttpRequset(url, this, body);
}

Android中使用OkHttp的五种请求方式及注意事项

5.发送Post 的Json数据

发送Json数据需要借助JSONObject,把数据转换成Json格式

//Json化参数Post接口
private final String url = "http://xxxxxx/user/postObjectParamUser";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("id",1111111);
jsonObject.put("name","顺");
jsonObject.put("studentId","123123");
jsonObject.put("sex","小萌新");
jsonObject.put("data","I have pan");
} catch (JSONException e) {
e.printStackTrace();
}
RequestBody body = FormBody.create(MediaType.parse("application/json;charset=utf-8"), jsonObject.toString());

OkHttpUtil.getHttpRequset(url, this, body);
}

Android中使用OkHttp的五种请求方式及注意事项

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

Android中使用OkHttp的五种请求方式及注意事项

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » Android中使用OkHttp的五种请求方式及注意事项
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏