url编码okhttp3 android删除%20

url编码okhttp3 android删除%20,android,api,replace,okhttp,Android,Api,Replace,Okhttp,您好,我使用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" + "/"

您好,我使用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();
...
但是在我在logcat中打印的日志中,请求失败(500内部服务器错误),因为url在单词“Bearer”之后有一个“%20”作为“空格”

错误是
errorinternalserver error

java.lang.String类型的
org.json.JSONException:Value Error<无法转换为JSONObject
我尝试使用token.replace(“%20”,”“)方法或URLEncoder.encode(token,“UTF-8”)和其他方法,但都不起作用

有人能帮我在url中没有“%20”聊天符的情况下以正确的方式编码吗


谢谢

您尝试使用curl和使用OkHttp库所做的工作是有区别的

在curl中,您添加了两个标题。在OkHttp中,您添加了一个头并将令牌附加到url,而不是添加到头

您的代码应该是这样的:(假设
token=“Bearer 123456”


尝试使用curl与使用OkHttp库之间存在差异

在curl中,您添加了两个标题。在OkHttp中,您添加了一个头并将令牌附加到url,而不是添加到头

您的代码应该是这样的:(假设
token=“Bearer 123456”

 Request{method=GET, url=http://1.1.1.1:8080/login/Bearer%20123456
org.json.JSONException: Value <html><head><title>Error< of type java.lang.String cannot be converted to JSONObject
final String url = BuildConfig.BASE_AUTH_URL + "/login"; // removed token from here

Request request = new Request.Builder()
              .url(url)
              .addHeader("Content-type", "application/json")
              .addHeader("Authorization", token) // Auth header added here
              .get()
              .build();
...