犀渠玉剑良家子,白马金羁侠少年。这篇文章主要讲述url编码okhttp3 android删除%20相关的知识,希望能为你提供帮助。
您好我在android中使用Okhttp3库创建了一个GET调用,用于cURL调用,如下所示:
curl -X GET "http://1.1.1.1:8080/api/v1/login" -H "accept: application/json" -H "Authorization: Bearer 123456"
这样在Android中使用OkHttp3库
final String url = BuildConfig.BASE_AUTH_URL + "/login" + "/" + token;
Request request = new Request.Builder()
.url(url)
.addHeader("Content-type", "application/json")
.get()
.build();
...
【url编码okhttp3 android删除%20】但是在我在logcat中打印的日志中,请求失败(500内部服务器错误),因为url在“Bearer”一词后面有一个“%20”作为“空格”
Request{method=GET, url=http://1.1.1.1:8080/login/Bearer%20123456
而错误是
<
html>
<
head>
<
title>
Error<
/title>
<
/head>
<
body>
Internal Server Error<
/body>
<
/html>
org.json.JSONException: Value <
html>
<
head>
<
title>
Error<
of type java.lang.String cannot be converted to JSONObject
我尝试使用token.replace(“%20”,“”)方法或URLEncoder.encode(令牌,“UTF-8”)和其他,但没有一个工作。
有人可以帮助我以正确的方式编码,而网址中没有“%20”字符吗?
谢谢
答案您尝试使用curl的内容与使用OkHttp库的内容之间存在差异。
在curl中你添加了两个标题。在OkHttp中,您添加了一个标头并将标记附加到网址,而不是将其添加到标头中。
你的代码应该是这样的:(假设
token = "Bearer 123456"
)final String url = BuildConfig.BASE_AUTH_URL + "/login";
// removed token from hereRequest request = new Request.Builder()
.url(url)
.addHeader("Content-type", "application/json")
.addHeader("Authorization", token) // Auth header added here
.get()
.build();
...
推荐阅读
- keyPress事件未在Android手机中触发
- 在create-react-app中调试es6
- 如何在Android上导出Highstock / Highcharts图表()
- Android Studio中未生成MainActivityBinding文件
- ClassNotFoundException(没有找到类“android.databinding.DataBinderMapper”)
- 声卡驱动不了!装好但不发声,或装驱动过程中
- 教你为啥开机必须按F1才能进入系统
- 为啥网上邻居别的电脑访问不到我的电脑?
- 为啥装这个系统后我的硬盘变成可插拨设备了