项目作者: echisan

项目描述 :
Simple Java Api for 微博图床,使用简单的api即可完成上传图片
高级语言: Java
项目地址: git://github.com/echisan/wbp4j.git


wbp4j

weibo picture api for java (中二一下)

使用Java实现的微博图床API,提供简单的api即可完成上传图片到微博图床,可方便集成到自己的项目当中。

如果有兴趣或奇怪的需求或者想看故事可以查看说明文档
如果出现任何问题欢迎提issue、欢迎提pr
如果这个项目帮助到你了欢迎star鼓励一下^^

特色

  • 使用方便简单
  • 获取简单,直接加入maven依赖即可
  • cookie缓存
  • cookie过期自动登录
  • 第三方依赖少,仅依赖fastjson,logback
  • 自由度高,一切均可自定义配置
  • 仍在维护

Maven

引入maven依赖即可

  1. <dependency>
  2. <groupId>com.github.echisan</groupId>
  3. <artifactId>wbp4j</artifactId>
  4. <version>3.3</version>
  5. </dependency>

用法

使用默认配置

这个方式只做演示,请不要每次调用上传接口都使用UploadRequestBuilder build一次
build()方法会初始化所有的CookieContext WbpHttpRequest LoginRequest Interceptor列表等等,但是这些东西只需初始化一次,之后便是对cookie的管理。

  1. UploadRequest uploadRequest = UploadRequestBuilder.buildDefault("your username", "your password");
  2. UploadResponse response = uploadRequest.upload(new File("go.png"));

建议写成单例,在有需要的时候拿到UploadRequest对象调用upload方法即可

  1. public enum UploadUtils {
  2. INSTANCE;
  3. private UploadRequest uploadRequest;
  4. UploadUtils() {
  5. uploadRequest = UploadRequestBuilder.buildDefault("yourUsername","yourPassword");
  6. }
  7. public UploadResponse upload(File file) throws IOException, UploadFailedException {
  8. return uploadRequest.upload(file);
  9. }
  10. public UploadRequest getUploadRequest(){
  11. return this.uploadRequest;
  12. }
  13. }

自定义配置

支持自定义拦截器,具体查看文档

  1. UploadRequest uploadRequest = UploadRequestBuilder.custom("your username", "your password")
  2. .setCacheFilename("myCache")
  3. .addInterceptor(new UploadInterceptor() {
  4. @Override
  5. public boolean processBefore(UploadAttributes uploadAttributes) {
  6. System.out.println("hello world");
  7. return true;
  8. }
  9. @Override
  10. public void processAfter(UploadResponse uploadResponse) {
  11. }
  12. }).build();
  13. UploadResponse uploadResponse = uploadRequest.upload(new File(""));

返回结果

  1. {
  2. "message": "上传图片成功",
  3. "imageInfo": {
  4. "pid": "7fa15162gy1g1e5o2vlmwj20dn07e0t7",
  5. "width": 491,
  6. "height": 266,
  7. "size": 27707,
  8. "large": "https://ws3.sinaimg.cn/large/7fa15162gy1g1e5o2vlmwj20dn07e0t7.jpg",
  9. "middle": "https://ws3.sinaimg.cn/mw690/7fa15162gy1g1e5o2vlmwj20dn07e0t7.jpg",
  10. "small": "https://ws3.sinaimg.cn/small/7fa15162gy1g1e5o2vlmwj20dn07e0t7.jpg"
  11. },
  12. "result": "SUCCESS"
  13. }

使用

Spring中使用

  1. @SpringBootApplication
  2. public class DemoApplication {
  3. @Bean
  4. public UploadRequest uploadRequest() {
  5. return UploadRequestBuilder.buildDefault("your username", "your password");
  6. }
  7. public static void main(String[] args) {
  8. SpringApplication.run(DemoApplication.class, args);
  9. }
  10. }
  11. @RestController
  12. @RequestMapping("/wbp4j")
  13. class TestController {
  14. @Autowired
  15. private UploadRequest uploadRequest;
  16. @PostMapping
  17. public WbpUploadResponse uploadImage(@RequestPart("file") MultipartFile multipartFile) throws IOException, UploadFailedException {
  18. UploadResponse upload = uploadRequest.upload(multipartFile.getBytes());
  19. // 推荐先做一个判断
  20. // if (response.getResult().equals(UploadResponse.ResultStatus.SUCCESS)) {
  21. // 做自己的响应封装
  22. //}
  23. return (WbpUploadResponse) upload;
  24. }
  25. }

注意:UploadRequest是一个线程安全的类,可直接注入到你想使用的类中去,不要每次调用上传api时都去调用UploadRequestBuilder.build()是没有任何意义的

更新日志

2019.04.23

修复了修改缓存文件名不生效的问题 .
增加了登陆失败返回的信息以及对unicode的解码 .

2019.03.30

优化了重试代码 .
修复了重试机制还是不生效的问题 .

2019.03.25

修复了重试机制不生效的问题 .

2019.03.24

修复了部署到服务器后无法登陆的问题 .
修复了返回的图片格式问题 .

2019.03.23

重构代码,代码结构更清晰稳定,减低各模块的耦合 .
修复缓存文件位置错误的问题 .
修复上传图片格式问题 .
支持了上传gif .

2018.11.08

重构了代码,减少第三方依赖,目前只依赖logging,fastjson .
将包上传至官方仓库使用更方便 .