All Downloads are FREE. Search and download functionalities are using the official Maven repository.

top.jfunc.http.holder.BodyHolder Maven / Gradle / Ivy

package top.jfunc.http.holder;

import top.jfunc.common.string.ToString;
import top.jfunc.common.string.ToStringHandler;
import top.jfunc.common.utils.IoUtil;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Objects;

/**
 * Body处理器,Body相关的处理,提供了众多设置body的方式
 * 
    *
  • 1.字符串、CharSequence
  • *
  • 2.Java对象,依赖于 {@link ToString} 或 {@link ToStringHandler}
  • *
  • 3.字节数组
  • *
  • 4.输入流
  • *
* @author xiongshiyan */ public interface BodyHolder{ /** * 获取实际的Body * @return body */ String getBody(); /** * 获取body的字符编码 * @return charset of body */ String getBodyCharset(); /** * 设置请求体 * @param body body * @return this */ BodyHolder setBody(String body); /** * 设置请求体,提供对{@link StringBuffer}、{@link StringBuilder}等{@link CharSequence}的支持 * @param body body * @return this */ default BodyHolder setBody(CharSequence body){ return setBody(body.toString()); } /** * 设置字符编码 * @param bodyCharset 字符编码 * @return this */ BodyHolder setBodyCharset(String bodyCharset); /** * 设置字符编码 * @param body body * @param bodyCharset 字符编码 * @return this */ default BodyHolder setBodyAndCharset(String body, String bodyCharset){ return setBody(body).setBodyCharset(bodyCharset); } /** * 直接传输一个Java对象可以使用该方法 * @param o Java对象 * @param handler 将Java对象转换为String的策略接口 * @return this */ default BodyHolder setBodyT(T o, ToStringHandler handler){ ToStringHandler stringHandler = Objects.requireNonNull(handler, "handler不能为空"); return setBody(stringHandler.toString(o)); } /** * 使用{@link ToString}处理JavaObject * @param o Java对象 * @param handler 处理器 * @return this */ default BodyHolder setBody(Object o, ToString handler){ ToString toString = Objects.requireNonNull(handler, "handler不能为空"); return setBody(toString.toString(o)); } /** * 使用字节数组 * @param bytes 字节数组 * @return this */ default BodyHolder setBody(byte[] bytes){ return setBody(bytes , getBodyCharset()); } /** * 使用字节数组 * @param bytes 字节数组 * @param bodyCharset 字符编码 * @return this */ default BodyHolder setBody(byte[] bytes, String bodyCharset){ try { return setBodyAndCharset(new String(bytes , bodyCharset) , bodyCharset); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } } /** * 从流中获取body,并且关闭流 * @param inputStream 输入流 * @param bodyCharset 编码 * @return this */ default BodyHolder setBody(InputStream inputStream, String bodyCharset){ byte[] bytes; try { bytes = IoUtil.stream2Bytes(inputStream); } catch (IOException e) { throw new RuntimeException(e); }finally { IoUtil.close(inputStream); } return setBody(bytes, bodyCharset); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy