前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >图片上传api——chevereto个人图床搭建&后端发送请求

图片上传api——chevereto个人图床搭建&后端发送请求

作者头像
不愿意做鱼的小鲸鱼
发布于 2022-09-26 10:37:15
发布于 2022-09-26 10:37:15
4K00
代码可运行
举报
文章被收录于专栏:web全栈web全栈
运行总次数:0
代码可运行

chevereto个人图床

chevereto图床介绍

  • Chevereto是一个免费图床建站源码是一个允许用户创建自己的照片展示专题的网站程序,类似于图库,非常适合自己搭建图床平台,易于部署,无需sql数据库,支持图片的批量上传,支持主题的定制。
  • Chevereto采用PHP语言开发的网络相册脚本程序,支持多语言,提供中文语言包的下载的开源在线图片存储分享服务系统,支持本地上传和在线获取两种图像上传方式,并集成了TinyURL网址缩短服务。
  • Chevereto这套程序可以像WordPress一样随意架设在任何空间上。而它的功能除了一般图片空间单纯的从电脑上传图片外,也支援利用网址也可以上传,最值得一说的是还有TinyURL的缩短网址的功能可以使用,因此这套Chevereto可以说是比市面上的图片空间好太多了。

chevereto图床效果展示

本人的图床网站:http://images.qkongtao.cn/

chevereto图床搭建步骤

  1. 先去下载chevereto程序,下载地址:https://github.com/Chevereto/Chevereto-Free 或者网盘下载: 链接:https://pan.baidu.com/s/1HtvvvT9EKCvqNVDHOtCsDw 提取码:0qzz
  2. 我们把压缩包的文件解压出来用FTP上传到网站的根目录。环境面板不同根目录地址各不相同我就不介绍了。总之上传到网站根目录下。
  1. 修改这个压缩包解压后所有文件的权限,最好修改成777。
  2. 自己先创建好数据库,通过网址进入程序

5. 根据要求填写,还有填写相关管理员的信息,填写成功后,再次进入该网址,就直接进入了chevereto图床首页。 6. 进入之后可以登录进入仪盘表对网站进行美化。

使用chevereto图床API开发

chevereto图床API开发可以查阅文档:http://ch.cndrew.cn/cn/API/API%20V1/#api_4 里面也有chevereto的使用方法。

下面就来说说怎么把chevereto图床应用到项目中:

1. 测试chevereto的api接口(Postman测试)
  • 使用post请求(http://你的图床网址/api/1/upload/?key=***********&format=json
  • post请求也需要携带url参数(?key=************&format=json)

key可以在网址仪盘表后台获得

  • 最后在body里面携带文件参数

* 请求成功后返回

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "status_code": 200,
    "success": {
        "message": "image uploaded",
        "code": 200
    },
    "image": {
        "name": "911401",
        "extension": "jpg",
        "size": "606003",
        "width": "1920",
        "height": "1080",
        "date": "2021-04-02 00:21:17",
        "date_gmt": "2021-04-01 15:21:17",
        "title": "911401",
        "description": null,
        "nsfw": "0",
        "storage_mode": "datefolder",
        "storage_id": null,
        "md5": "4efe43e242baa28c623c1e3efdff1b39",
        "source_md5": null,
        "original_filename": "911401.jpg",
        "original_exifdata": null,
        "views": "0",
        "category_id": null,
        "chain": "7",
        "thumb_size": "9318",
        "medium_size": "33633",
        "expiration_date_gmt": null,
        "likes": "0",
        "is_animated": "0",
        "file": {
            "resource": {
                "type": "path",
                "chain": {
                    "image": "/www/wwwroot/root/Chevereto-Free-master/images/2021/04/02/911401.jpg",
                    "thumb": "/www/wwwroot/root/Chevereto-Free-master/images/2021/04/02/911401.th.jpg",
                    "medium": "/www/wwwroot/root/Chevereto-Free-master/images/2021/04/02/911401.md.jpg"
                }
            }
        },
        "id_encoded": "l41",
        "filename": "911401.jpg",
        "mime": "image/jpeg",
        "url": "http://images.qkongtao.cn/images/2021/04/02/911401.jpg",
        "url_viewer": "http://images.qkongtao.cn/image/l41",
        "image": {
            "filename": "911401.jpg",
            "name": "911401",
            "mime": "image/jpeg",
            "extension": "jpg",
            "url": "http://images.qkongtao.cn/images/2021/04/02/911401.jpg",
            "size": "606003"
        },
        "thumb": {
            "filename": "911401.th.jpg",
            "name": "911401.th",
            "mime": "image/jpeg",
            "extension": "jpg",
            "url": "http://images.qkongtao.cn/images/2021/04/02/911401.th.jpg",
            "size": "9318"
        },
        "medium": {
            "filename": "911401.md.jpg",
            "name": "911401.md",
            "mime": "image/jpeg",
            "extension": "jpg",
            "url": "http://images.qkongtao.cn/images/2021/04/02/911401.md.jpg",
            "size": "33633"
        },
        "size_formatted": "606 KB",
        "display_url": "http://images.qkongtao.cn/images/2021/04/02/911401.md.jpg",
        "display_width": "1920",
        "display_height": "1080",
        "views_label": "次浏览",
        "likes_label": "喜欢",
        "how_long_ago": "刚刚",
        "date_fixed_peer": "2021-04-01 15:21:17",
        "title_truncated": "911401",
        "title_truncated_html": "911401",
        "is_use_loader": false
    },
    "status_txt": "OK"
}
2. 使用Java进行开发图床的图片上传功能

步骤是这样的: * 先在后端配置好请求的参数和路径 * 然后再Java后端发送http请求,传入的文件参数正是客户端的文件 * 再在后端接收Java后端发送http请求后响应回来的数据 * 最后可以对返回的数据进行处理:比如重要信息存入数据库、响应给客户端的数据进行自定义封装等等 1. 导入坐标

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!--带文件上传HTTP client配置-->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.6</version>
        </dependency>
  1. 编写工具类CheveretoUtil.java
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.kt.qinu_demo.utils;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Encoder;
/**
 * @author tao
 * @date 2021-03-28 21:58
 * 概要:
 */
public class CheveretoUtil {
   //文件上传URL
    public static final String CHEVERETO_URL = "http://你的网址/api/1/upload/";
    //Chevereto API Key
    public static final String CHEVERETO_API_KEY = "你的key";
    /**
     * MultipartFile转BASE64字符串
     *
     * @param file
     * @return
     * @throws Exception
     */
    public static String multipartFileToBASE64(MultipartFile file) throws Exception {
        BASE64Encoder base64Encoder = new BASE64Encoder();
        String base64EncoderImg = base64Encoder.encode(file.getBytes());
        return base64EncoderImg;
    }
    public static String upload(MultipartFile file) throws Exception {
        String jsonObject = null;
        try {
            //jsonObject = OkHttpClientUtils.sendPost(CheveretoUtil.CHEVERETO_URL + "?key=" + CHEVERETO_API_KEY + "&format=json", file);
            //jsonObject = HttpClientUtil.gettestRestTemplate(file, CheveretoUtil.CHEVERETO_URL + "?key=" + CHEVERETO_API_KEY + "&format=json");
            jsonObject = HttpClientUtil.gettesthttpclient(file, CheveretoUtil.CHEVERETO_URL + "?key=" + CHEVERETO_API_KEY + "&format=json");

        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(jsonObject);
        return jsonObject;
    }
}
  1. 编写携带文件发送post请求的工具类HttpClientUtil.java
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.kt.qinu_demo.utils;
import lombok.SneakyThrows;
import org.apache.http.Consts;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.PostConstruct;
import java.io.IOException;
/**
 * @author tao
 * @date 2021-03-29 22:55
 * 概要:
 */
public class HttpClientUtil {
    /**
     * @param file
     * @param url  发送携带file的post请求,接收返回的数据
     */
    @SneakyThrows
    public static String gettesthttpclient(MultipartFile file, String url) {
        System.out.println(url);
        CloseableHttpClient httpclient = HttpClients.createDefault();
        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectionRequestTimeout(10000)
                .setConnectTimeout(5000)
                .build();
        HttpPost httpPost = new HttpPost(url);
        MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
        // 解决中文文件名乱码问题
        entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
        entityBuilder.setCharset(Consts.UTF_8);
        ContentType contentType = ContentType.create(ContentType.TEXT_PLAIN.getMimeType(), Consts.UTF_8);
        entityBuilder.addBinaryBody("source", file.getInputStream(), ContentType.DEFAULT_BINARY, file.getOriginalFilename());
        httpPost.setEntity(entityBuilder.build());
        httpPost.setConfig(requestConfig);
        HttpResponse execute = httpclient.execute(httpPost);
        String flag = EntityUtils.toString(execute.getEntity());
        return flag;
    }
}
  1. 编写CheveretoController.java
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.kt.qinu_demo.controller;
import cn.kt.qinu_demo.utils.CheveretoUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import java.util.*;
/**
 * @author tao
 * @date 2021-03-28 21:57
 * 概要:
 */
@RestController
@Slf4j
@RequestMapping("chevereto")
public class CheveretoController {
    /**
     * 商品图片上传
     *
     * @param file
     * @return
     */
    @PostMapping("/upload")
    @ResponseBody
    public JSONObject upload(MultipartFile file) throws Exception {
        String str = CheveretoUtil.upload(file);
        //将带有json格式的字符串转换为json对象
        JSONObject jsonObject = JSON.parseObject(str);
        //获取转换为json对象后里面的json对象
        JSONObject image = jsonObject.getJSONObject("image");
        //获取转换为json对象后里面的属性值
        String url = image.getString("url");
        System.out.println(image);
        System.out.println(url);
        /**----------------------- 编写存储和返回需要的相关逻辑 ------------------------- */
        return jsonObject;
    }
}
3. 测试上传接口
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
url:http://localhost:8080/chevereto/upload
method:post
参数:body(file:file)

后端发送请求的方法

  1. 之前做项目的时候也遇到过需要在后端发送请求来获取数据 具体可以参考我的这篇博客:http://qkongtao.cn/?p=514#1_java
  2. 使用okhttp3类 具体细节可以参考以下代码(测试可行)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.kt.qinu_demo.utils;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
 * @author tao
 * @date 2021-03-28 22:00
 * 概要:OkHttp 工具类
 */
@Slf4j
public class OkHttpClientUtils {
    private static final int READ_TIMEOUT = 150;
    private static final int CONNECT_TIMEOUT = 100;
    private static final int WRITE_TIMEOUT = 60;
    private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
    private static final byte[] LOCKER = new byte[0];
    private static OkHttpClientUtils mInstance;
    private static OkHttpClient okHttpClient = new OkHttpClient();
    private OkHttpClientUtils() {
        okhttp3.OkHttpClient.Builder clientBuilder = new okhttp3.OkHttpClient.Builder();
        // 读取超时
        clientBuilder.readTimeout(READ_TIMEOUT, TimeUnit.SECONDS);
        // 连接超时
        clientBuilder.connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS);
        //写入超时
        clientBuilder.writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS);
        okHttpClient = clientBuilder.build();
    }
    /**
     * 单例模式获取 NetUtils
     *
     * @return {@link OkHttpClientUtils}
     */
    public static OkHttpClientUtils getInstance() {
        if (mInstance == null) {
            synchronized (LOCKER) {
                if (mInstance == null) {
                    mInstance = new OkHttpClientUtils();
                }
            }
        }
        return mInstance;
    }

    /**
     * GET,同步方式,获取网络数据
     *
     * @param url 请求地址
     * @return {@link Response}
     */
    public Response getData(String url) {
        // 构造 Request
        Request.Builder builder = new Request.Builder();
        Request request = builder.get().url(url).build();
        System.out.println(request);
        // 将 Request 封装为 Call
        Call call = okHttpClient.newCall(request);
        System.out.println(call);
        // 执行 Call,得到 Response
        Response response = null;
        try {
            response = call.execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return response;
    }
    /**
     * POST 请求,同步方式,提交数据
     *
     * @param url        请求地址
     * @param bodyParams 请求参数
     * @return {@link Response}
     */
    public Response postData(String url, Map<String, String> bodyParams) {
        // 构造 RequestBody
        RequestBody body = setRequestBody(bodyParams);
        // 构造 Request
        Request.Builder requestBuilder = new Request.Builder();
        Request request = requestBuilder.post(body).url(url).build();
        // 将 Request 封装为 Call
        Call call = okHttpClient.newCall(request);
        // 执行 Call,得到 Response
        Response response = null;
        try {
            response = call.execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return response;
    }

    /**
     * 同步 POST 请求,使用 JSON 格式作为参数
     *
     * @param url  请求地址
     * @param json JSON 格式参数
     * @return 响应结果
     * @throws IOException 异常
     */
    public String postJson(String url, String json) throws IOException {
        RequestBody body = RequestBody.create(JSON, json);
        Request request = new Request.Builder()
                .url(url)
                .post(body)
                .build();
        Response response = okHttpClient.newCall(request).execute();
        if (response.isSuccessful()) {
            return response.body().string();
        } else {
            throw new IOException("Unexpected code " + response);
        }
    }
    /**
     * GET 请求,异步方式,获取网络数据
     *
     * @param url       请求地址
     * @param myNetCall 回调函数
     */
    public static void getDataAsync(String url, final MyNetCall myNetCall) {
        // 构造 Request
        Request.Builder builder = new Request.Builder();
        Request request = builder.get().url(url).build();
        // 将 Request 封装为 Call
        Call call = okHttpClient.newCall(request);
        // 执行 Call
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                myNetCall.failed(call, e);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                myNetCall.success(call, response);
            }
        });
    }

    /**
     * 构造 POST 请求参数
     *
     * @param bodyParams 请求参数
     * @return {@link RequestBody}
     */
    private RequestBody setRequestBody(Map<String, String> bodyParams) {
        RequestBody body = null;
        okhttp3.FormBody.Builder formEncodingBuilder = new okhttp3.FormBody.Builder();
        if (bodyParams != null) {
            Iterator<String> iterator = bodyParams.keySet().iterator();
            String key = "";
            while (iterator.hasNext()) {
                key = iterator.next().toString();
                formEncodingBuilder.add(key, bodyParams.get(key));
            }
        }
        body = formEncodingBuilder.build();
        return body;
    }

    /**
     * POST 请求,异步方式,提交数据
     *
     * @param url        请求地址
     * @param bodyParams 请求参数
     * @param myNetCall  回调函数
     */
    public void postDataAsync(String url, Map<String, String> bodyParams, final MyNetCall myNetCall) {
        // 构造 RequestBody
        RequestBody body = setRequestBody(bodyParams);
        // 构造 Request
        buildRequest(url, myNetCall, body);
    }
    /**
     * 异步 POST 请求,使用 JSON 格式作为参数
     *
     * @param url       请求地址
     * @param json      JSON 格式参数
     * @param myNetCall 回调函数
     * @throws IOException 异常
     */
    public void postJsonAsync(String url, String json, final MyNetCall myNetCall) throws IOException {
        RequestBody body = RequestBody.create(JSON, json);
        // 构造 Request
        buildRequest(url, myNetCall, body);
    }
    /**
     * 构造 Request 发起异步请求
     *
     * @param url       请求地址
     * @param myNetCall 回调函数
     * @param body      {@link RequestBody}
     */
    private void buildRequest(String url, MyNetCall myNetCall, RequestBody body) {
        Request.Builder requestBuilder = new Request.Builder();
        Request request = requestBuilder.post(body).url(url).build();
        // 将 Request 封装为 Call
        Call call = okHttpClient.newCall(request);
        // 执行 Call
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                myNetCall.failed(call, e);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                myNetCall.success(call, response);
            }
        });
    }
    /**
     * 自定义网络回调接口
     */
    public interface MyNetCall {
        /**
         * 请求成功的回调处理
         *
         * @param call     {@link Call}
         * @param response {@link Response}
         * @throws IOException 异常
         */
        void success(Call call, Response response) throws IOException;

        /**
         * 请求失败的回调处理
         *
         * @param call {@link Call}
         * @param e    异常
         */
        void failed(Call call, IOException e);
    }
}
  1. 携带文件发送POST请求(如HttpClientUtil.java)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.kt.qinu_demo.utils;
import lombok.SneakyThrows;
import org.apache.http.Consts;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.PostConstruct;
import java.io.IOException;
/**
 * @author tao
 * @date 2021-03-29 22:55
 * 概要:
 */
public class HttpClientUtil {
    /**
     * @param file
     * @param url  发送携带file的post请求,接收返回的数据
     */
    @SneakyThrows
    public static String gettesthttpclient(MultipartFile file, String url) {
        System.out.println(url);
        CloseableHttpClient httpclient = HttpClients.createDefault();
        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectionRequestTimeout(10000)
                .setConnectTimeout(5000)
                .build();
        HttpPost httpPost = new HttpPost(url);
        MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
        // 解决中文文件名乱码问题
        entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
        entityBuilder.setCharset(Consts.UTF_8);
        ContentType contentType = ContentType.create(ContentType.TEXT_PLAIN.getMimeType(), Consts.UTF_8);
        entityBuilder.addBinaryBody("source", file.getInputStream(), ContentType.DEFAULT_BINARY, file.getOriginalFilename());
        httpPost.setEntity(entityBuilder.build());
        httpPost.setConfig(requestConfig);
        HttpResponse execute = httpclient.execute(httpPost);
        String flag = EntityUtils.toString(execute.getEntity());
        return flag;
    }
}

源码下载

本次下载的项目源码包含 1. 七牛云API文件上传源码(上一篇博客:文件上传——七牛云) 2. chevereto图床API开发源码 链接如下 链接:https://pan.baidu.com/s/1Y6xrpSSTu68_-dp3pcBEOQ 提取码:tw2b

真的是为爱发电,希望大家多多点赞、关注、支持!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
面试被问:HTTP客户端连接,选择HttpClient还是OkHttp?
这又触及到我的知识盲区了,首先来一波面向百度学习,直接根据关键字httpclient和okhttp的区别、性能比较进行搜索,没有找到想要的答案,于是就去overstackflow上看看是不是有人问过这个问题,果然不会让你失望的
田维常
2020/02/24
10.2K0
java发送请求网络请求
import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse
jaychou
2022/12/26
1.9K0
Java实现调用HTTP请求的几种常见方式
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/09/19
6K0
Java实现调用HTTP请求的几种常见方式
测试框架-TestNG-结合Selenium、Appium、OkHttp、HttpClient的简单示例
4、执行脚本(testng.xml鼠标右键Run As--->TestNG Suite)。
wangmcn
2022/07/25
1.4K0
测试框架-TestNG-结合Selenium、Appium、OkHttp、HttpClient的简单示例
Java发送Http请求(HttpClient)
HttpClient 是Apache HttpComponents 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是Apache HttpComponents 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
ha_lydms
2023/08/09
1.1K0
10分钟手撸一个API监控系统基础框架,吊打装逼犯
最近,api老不稳定呀,要等用户反馈才知道问题,老板火了,问同事做过没,没做过呀,小码农我只能翻身干活儿,这个需求被自己想起到基本框架实现,也就10来分钟的样子;能准确理解需求,然后迅速转化为代码实现,属于现学现用,很多不大会,但只要花时间基本都可以会,在自我看来几乎是没有上限的,只是感叹时间在哪儿,能超过这种理解能力的应该大有人在,不过超过这种水平的人一般不在我们面前装逼,因为确实是高手;还有一种偶尔写了一个文章就开始装了,大多半桶水,必须吐槽一下,没时间写文章,吐槽一定还是有时间的,兴趣之一
肉眼品世界
2020/11/11
3640
10分钟手撸一个API监控系统基础框架,吊打装逼犯
封装httpClient工具类进行get、post、put、delete的http接口请求,可添加请求头与参数,支持多线程
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157763.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/18
2.8K0
HTTP 请求工具类
坐标 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.1</version> <classifier>jdk15</classifier> </dependency> 工具类 package com.baomidou.springboot.uti
高大北
2022/06/14
9850
java 通过HTTP接收json
一: json接收类, 第一个接口为直接传参接收 第二个接口接收json字符串 可以写个HTTP测试类调用测试,也可以postman测试调用,实例方法贴到下面
matinal
2023/10/13
5570
OkHttp搞定Http请求
当网络出现问题时,OkHttp会自动恢复一般的连接问题;若服务有多个IP地址,当第一个IP请求失败时,OkHttp会交替尝试你配置的其他IP。
鱼找水需要时间
2023/02/16
2.7K0
极光推送_总结_01_Java实现极光推送
一、代码实现 1.配置类—Env.java package com.ray.jpush.config; /**@desc : 极光推送接入配置 * * @author: shirayner * @date : 2017年9月27日 下午4:57:36 */ public class Env { /** * 1.极光推送后台APPKEY,MASTER_SECRET */ public static final String APP_KEY = "354f
shirayner
2018/08/10
1.1K0
apache的Http请求
天地英雄气,千秋尚凛然。一一刘禹锡 我们的Springboot已经为我们引用了依赖 但我们还需要一个 <!-- apache http前置依赖 --> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-servlet</artifactId> <version>1.19</version> </dependency> 首先是一个GET请求 我们接口使用@RequestParam接参,所
阿超
2022/08/16
8790
apache的Http请求
JavaUtil_06_HttpUtil_使用httpclient实现
一、简介 使用 appache 的 httpclient 来实现的 二、源码 package com.ray.weixin.gz.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.http.Consts; import org.apache.http.Header; import org.
shirayner
2018/08/10
9440
求助-钉钉开发异步消息失败
源码: 1.AsyncMessage.java package com.ray.dingtalk.model.message.asyncsend; /**@desc : * * 参考文档地
shirayner
2018/08/10
8581
Java发送Post请求,获取返回的请求头Header
在利用Java网络编程时,利用Java获取HTTP Request 和 Response头字段;
chenchenchen
2021/09/06
6.2K0
OKhttpClient 简单使用总结「建议收藏」
http优化,由httpClient改为OKHttpClient,研究了一下,网上资料不多大部分是安卓的,就着httpClient的入参简单写了一个公共方法,因为上一层使用了hystrix,就没有使用异步调用。后期看业务需要增加OKHttp的拦截和其他特性。
全栈程序员站长
2022/07/31
5.8K0
Java微信公众平台开发_06_素材管理
一、本节要点 1.官方文档的media  这个media可以理解为文件,即我们需要以POST方式提交一个文件 2.媒体文件有效期 媒体文件在微信后台保存时间为3天,即3天后media_id失效。 二、
shirayner
2018/08/10
1.9K0
Java微信公众平台开发_06_素材管理
SpringBoot 压缩数据流如何解压
客户端也可以发送压缩数据给服务端,通过代码将请求数据压缩即可,规范起见同样要在请求中加入 Content-Encoding: gzip
BUG弄潮儿
2021/07/22
1.4K0
日常开发必备神器 HttpUtil 分享(超详细)
最近在工作中需要在后台调用各种上传、下载、以及第三方服务接口,经过研究决定使用 HttpClient,自己封装了一个 HttpClient 工具类,简单轻松的实现get、post、put、delete 以及上传、下载请求,在此分享给大家。
Java极客技术
2022/12/04
3.3K1
万字长文讲解调用第三方接口,RestTemplate,urlConnection使用详解,java代码模拟postman发送请求
在日常开发中,经常需要调用第三方接口,例如调用物流接口,此时需要利用urlConnection或者restTemplate模拟postman发送请求,请求支持加header ,设置content-type支持传递json;请求方式get,post,也可以需要传递文件,或者传递文件流;
javaNice
2023/11/20
9650
相关推荐
面试被问:HTTP客户端连接,选择HttpClient还是OkHttp?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验