springboot2.2.x以上版本GET请求特殊字符处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot2.2.x以上版本GET请求特殊字符处理相关的知识,希望对你有一定的参考价值。

参考技术A 这个问题是由于Tomcat的新版本中增加了一个新特性,就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符: ! * ’ ( ) ; : @ & = + $ , / ? # [ ] )。

参考: https://blog.csdn.net/qq_38680405/article/details/107237724?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4.not_use_machine_learn_pai

[技术博客]OKhttp3使用get,post,delete,patch四种请求

OKhttp3使用get,post,delete,patch四种请求

1.okhttp简介

okhttp封装了大量http操作,大大简化了安卓网络请求操作,是现在最火的安卓端轻量级网络框架。如今okhttp已经更新到了okhttp4.0, 支持Android5.0以及以上的版本,要求Java在8.0以及以上的版本。

2.okhttp安装

  • 可以通过添加依赖进行安装

    implementation("com.squareup.okhttp3:okhttp:4.7.2")
    
  • 可以通过JAR的方式进行安装,

    https://github.com/square/okhttp/
    
  • 如果使用的是androidStudio可以在Project Structure--->Dependencies 点击“+”号选Library dependency在搜索页面分别搜okttp,okio

3.okhttp使用

3.1get请求

这里提供官方给的例子

OkHttpClient client = new OkHttpClient();

String run(String url) throws IOException {
  Request request = new Request.Builder()
      .url(url)
      .build();

  try (Response response = client.newCall(request).execute()) {
    return response.body().string();
  }
}

3.2POST请求

同样提供官方给的例子

ublic static final MediaType JSON
    = MediaType.get("application/json; charset=utf-8");

OkHttpClient client = new OkHttpClient();

String post(String url, String json) throws IOException {
  RequestBody body = RequestBody.create(json, JSON);
  Request request = new Request.Builder()
      .url(url)
      .post(body)
      .build();
  try (Response response = client.newCall(request).execute()) {
    return response.body().string();
  }
}

3.3delete请求

public class DeleteApi {
    private OkHttpClient client;
    public void Delete(final Handler handler, final String url, final int what){
        final String token = TokenPool.getTokenPool().UserToken;
        client = new OkHttpClient();
        new Thread(){
            @Override
            public void run() {
                super.run();
                try {
                    String result = getUrl(url,token);
                    //    Log.d("TAG",result);
                    Message message1 = Message.obtain();
                    message1.what=what;
                    message1.obj = result;
                    handler.sendMessage(message1);
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }.start();
    }
    String getUrl(String url,String token) throws IOException {
        FormBody body = new FormBody.Builder().build();
        Request request = new Request.Builder()
                .url(url)
                .delete(body)
                .addHeader("Authorization","Bearer "+token)
                .build();

        try (Response response = client.newCall(request).execute()) {
            return response.body().string();
        }
    }
}

3.4patch请求

public class PatchApi {
    private OkHttpClient client;
    private MediaType mediaType
            = MediaType.parse("application/json; charset=utf-8");
    public void patch(final Handler handler,final String url,final RequestBody body, final int what){
        final String token = TokenPool.getTokenPool().UserToken;
        client = new OkHttpClient();
        new Thread(){
            @Override
            public void run() {
                super.run();
                try {
                    String result = getUrl(url,body,token);
                    Message message1 = Message.obtain();
                    message1.what= what;
                    message1.obj = result;
                    handler.sendMessage(message1);
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }.start();
    }
    String getUrl(String url, RequestBody body, String token) throws IOException {
        Request request = new Request.Builder()
                .url(url)
                .addHeader("Authorization","Bearer "+token)
                .patch(body)
                .build();

        try (Response response = client.newCall(request).execute()) {
            return response.body().string();
        }
    }
}

以上是关于springboot2.2.x以上版本GET请求特殊字符处理的主要内容,如果未能解决你的问题,请参考以下文章

[技术博客]OKhttp3使用get,post,delete,patch四种请求

SpringBoot2.2.X整合ElasricSearch7.8

SpringBoot2.2.X整合ElasricSearch7.8

SpringBoot2.2.X整合ElasricSearch7.8

怎么使用AJAX的GET和POST异步请求

Spring Cloud 链路追踪 Sleuth + Twitter Zipkin 中 Zipkin 服务