url编码okhttp3 android删除%20

时间:2018-03-02 02:10:37

标签: 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" + "/" + token;

Request request = new Request.Builder()
              .url(url)
              .addHeader("Content-type", "application/json")
              .get()
              .build();
...

但是在我在logcat中打印的日志中,请求失败(500内部服务器错误),因为该网址有一个"%20"作为一个"空间"在" Bearer"

之后
 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(&#34;%20&#34;,&#34;&#34;)方法或 URLEncoder.encode(令牌,&# 34; UTF-8&#34;)和其他人,但都没有。

有人可以帮助我以正确的方式进行编码而不使用&#34;%20&#34;在网址中聊天?

感谢

1 个答案:

答案 0 :(得分:2)

您尝试使用curl的内容与使用OkHttp库进行的操作之间存在差异。

在curl中,你要添加两个标题。在OkHttp中,您添加了一个标头并将标记附加到网址,而不是将其添加到标题中。

您的代码应如下所示:(假设Maximum

token = "Bearer 123456"