Android 使用okHttp post带参请求以及解决返回值为401 unauthorized问题

okHttpCLient 是现在比较常用http客户端,在使用okHttp中post请求时有时会需要带参数请求,而参数的格式我这里用的时json格式;
具体的写法有两种:
第一种:

RequestBody requestBody = new FormBody.BUilder()
		.add("username","admin")
		.add("password","123456")
		.build();
Request request  = new Request.Builder()
		.url("..............")
		.post(requestBody)
		.build();

但是这样数据格式就会收到限制,如果我们的请求参数是这样的json格式的字符串:

{"request":{"user_name":userName,"password":password,"user_auth":0}}

就无法使用这样的写法去实现,这里我们就要用到第二种方法:

String json= "{\"request\":{\"user_name\":\"username\",\"password\":\"password\",\"user_auth\":0}}";
 RequestBody requestBody = RequestBody.create(JSON,String.valueOf(json));

如果值是一个变量要做字符串拼接:

String json= "{\"request\":{\"user_name\":\""+username+"\",\"password\":\""+password+"\",\"user_auth\":0}}";

注意:\ “ 一定要加上

如果我们的参数不是简单的键值对,而是json格式requestBody就要这样写;

我在网上还看到过这样一种写法:

JSONObject json = new JSONObject();
try{
		json.put("username","username");
		json.put("password","password");
}catch(Exception e){
		e.printStackTrace();
}	
RequestBody requestBody = RequestBody.create(JSON,String.valueOf(json));	

但是这样写我自己尝试了一下,没有成功,返回值报401 unauthorized 错误;

http请求时,可能会遇到类似于401 这样的错误,我的理解是 这样的错误的原因可能有两种情况:
一、是我们的请求参数有问题
二、是服务器端的问题

首先先检查自己的参数是否有问题,我在开发的时候就是自己的参数写的有问题导致报401错误,
我使用的是第二种方法,在写的时候我将 \ " 这个少写了,于是参数的值就识别不出来了报错。
在这里插入图片描述
这个错误很低级,所以写代码一定细心。
如果不是参数问题,那就可能是服务端没有给权限,那这个就不是我们代码的问题了;

写此博客只为记录,以供日后参考;如果有哪里写的不对,希望大家可以指出;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值