OKHttp3非编码URL

时间:2017-12-28 07:24:02

标签: java okhttp3

当我按如下方式构建请求时:

new Request.Builder()
            .url("https://bla.com/entry/1411641")
            .build();

1411641变为https://bla.com/entry/%EF%BB%BF1411641

有没有办法在不编码URL的情况下构建请求?

4 个答案:

答案 0 :(得分:1)

你有一个Unicode字符' ZERO WIDTH NO-BREAK SPACE'输入中的(U + FEFF),编辑您复制的文本并将其删除。

http://www.fileformat.info/info/unicode/char/feff/index.htm

UTF-8(十六进制)0xEF 0xBB 0xBF(efbbbf)

答案 1 :(得分:0)

使用此:

new Request.Builder()
            .baseUrl("https://bla.com")
            .build();

并在界面

@GET("/entry/{id}/")
Call<ResponseBody> getData(@Path("id") String yourId);

答案 2 :(得分:0)

使用此:

final Request request = new Request.Builder()
.url(HttpUrl.parse("https://bla.com").newBuilder().addPathSegment("entry").addPathSegment("1411641").build())
                .post(formBody)
                .build();
OkHttpClient client = new OkHttpClient();
client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(@NonNull Call call, @NonNull IOException e) {

            }

            @Override
            public void onResponse(@NonNull Call call, @NonNull final Response response) throws IOException {
            }
        });

答案 3 :(得分:0)

此附加符号是编码字节顺序掩码(请参阅https://en.wikipedia.org/wiki/Byte_order_mark)。此隐藏字符在文件中进行处理,您从该文件中复制(或以编程方式读取)条目ID。

阅读文件时,请跳过此符号。或者使用正确的编码打开此文件。