{"id":37020160,"url":"https://github.com/echisan/wbp4j","last_synced_at":"2026-01-14T02:16:11.183Z","repository":{"id":34520724,"uuid":"137345913","full_name":"echisan/wbp4j","owner":"echisan","description":"Simple Java Api for 微博图床，使用简单的api即可完成上传图片","archived":false,"fork":false,"pushed_at":"2023-12-05T22:20:38.000Z","size":151,"stargazers_count":50,"open_issues_count":3,"forks_count":10,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-09T15:17:10.283Z","etag":null,"topics":["cookie","java","java-api","picture","weibo-login","weibo-sso-login","weibopicbed"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/echisan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-14T10:54:54.000Z","updated_at":"2025-04-23T15:57:27.000Z","dependencies_parsed_at":"2022-09-01T23:40:21.953Z","dependency_job_id":null,"html_url":"https://github.com/echisan/wbp4j","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/echisan/wbp4j","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echisan%2Fwbp4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echisan%2Fwbp4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echisan%2Fwbp4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echisan%2Fwbp4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/echisan","download_url":"https://codeload.github.com/echisan/wbp4j/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echisan%2Fwbp4j/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cookie","java","java-api","picture","weibo-login","weibo-sso-login","weibopicbed"],"created_at":"2026-01-14T02:16:10.511Z","updated_at":"2026-01-14T02:16:11.172Z","avatar_url":"https://github.com/echisan.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wbp4j\n\u003e weibo picture api for java (中二一下)\n\n使用Java实现的微博图床API，提供简单的api即可完成上传图片到微博图床，可方便集成到自己的项目当中。\n\n如果有兴趣或奇怪的需求或者想看故事可以查看[说明文档](https://github.com/echisan/wbp4j/wiki)   \n如果出现任何问题欢迎提issue、欢迎提pr   \n如果这个项目帮助到你了欢迎star鼓励一下^^\n\n# 特色\n- 使用方便简单\n- 获取简单，直接加入maven依赖即可\n- cookie缓存\n- cookie过期自动登录\n- 第三方依赖少，仅依赖fastjson，logback\n- 自由度高，一切均可自定义配置\n  - 可自定义缓存介质\n  - 可[自定义重试策略](https://github.com/echisan/wbp4j/wiki/%E8%87%AA%E5%AE%9A%E4%B9%89%E9%87%8D%E8%AF%95%E7%AD%96%E7%95%A5)\n  - 可自定义[拦截器](https://github.com/echisan/wbp4j/wiki/%E6%8B%A6%E6%88%AA%E5%99%A8)添加自己的逻辑\n- 仍在维护\n\n## Maven\n引入maven依赖即可\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.github.echisan\u003c/groupId\u003e\n  \u003cartifactId\u003ewbp4j\u003c/artifactId\u003e\n  \u003cversion\u003e3.3\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## 用法\n\n### 使用默认配置\n**这个方式只做演示，请不要每次调用上传接口都使用UploadRequestBuilder build一次**\nbuild()方法会初始化所有的`CookieContext` `WbpHttpRequest` `LoginRequest` `Interceptor列表`等等，但是这些东西只需初始化一次，之后便是对cookie的管理。\n\n```java\nUploadRequest uploadRequest = UploadRequestBuilder.buildDefault(\"your username\", \"your password\");\nUploadResponse response = uploadRequest.upload(new File(\"go.png\"));\n```\n\n**建议写成单例，在有需要的时候拿到UploadRequest对象调用upload方法即可**\n\n```java\npublic enum  UploadUtils {\n    INSTANCE;\n\n    private UploadRequest uploadRequest;\n\n    UploadUtils() {\n        uploadRequest = UploadRequestBuilder.buildDefault(\"yourUsername\",\"yourPassword\");\n    }\n\n    public UploadResponse upload(File file) throws IOException, UploadFailedException {\n        return uploadRequest.upload(file);\n    }\n    \n    public UploadRequest getUploadRequest(){\n        return this.uploadRequest;\n    }\n}\n```\n\n\n### 自定义配置\n支持自定义拦截器，具体查看文档\n\n```java\nUploadRequest uploadRequest = UploadRequestBuilder.custom(\"your username\", \"your password\")\n                .setCacheFilename(\"myCache\")\n                .addInterceptor(new UploadInterceptor() {\n                    @Override\n                    public boolean processBefore(UploadAttributes uploadAttributes) {\n                        System.out.println(\"hello world\");\n                        return true;\n                    }\n                    @Override\n                    public void processAfter(UploadResponse uploadResponse) {\n                    }\n                }).build();\n\nUploadResponse uploadResponse = uploadRequest.upload(new File(\"\"));\n```\n\n返回结果\n```json\n{\n    \"message\": \"上传图片成功\",\n    \"imageInfo\": {\n        \"pid\": \"7fa15162gy1g1e5o2vlmwj20dn07e0t7\",\n        \"width\": 491,\n        \"height\": 266,\n        \"size\": 27707,\n        \"large\": \"https://ws3.sinaimg.cn/large/7fa15162gy1g1e5o2vlmwj20dn07e0t7.jpg\",\n        \"middle\": \"https://ws3.sinaimg.cn/mw690/7fa15162gy1g1e5o2vlmwj20dn07e0t7.jpg\",\n        \"small\": \"https://ws3.sinaimg.cn/small/7fa15162gy1g1e5o2vlmwj20dn07e0t7.jpg\"\n    },\n    \"result\": \"SUCCESS\"\n}\n```\n\n## 使用\n\n## Spring中使用\n\n```java\n@SpringBootApplication\npublic class DemoApplication {\n    @Bean\n    public UploadRequest uploadRequest() {\n        return UploadRequestBuilder.buildDefault(\"your username\", \"your password\");\n    }\n    public static void main(String[] args) {\n        SpringApplication.run(DemoApplication.class, args);\n    }\n\n}\n\n@RestController\n@RequestMapping(\"/wbp4j\")\nclass TestController {\n\n    @Autowired\n    private UploadRequest uploadRequest;\n\n    @PostMapping\n    public WbpUploadResponse uploadImage(@RequestPart(\"file\") MultipartFile multipartFile) throws IOException, UploadFailedException {\n        UploadResponse upload = uploadRequest.upload(multipartFile.getBytes());\n        // 推荐先做一个判断\n        // if (response.getResult().equals(UploadResponse.ResultStatus.SUCCESS)) {\n        //    做自己的响应封装\n        //}\n        return (WbpUploadResponse) upload;\n    }\n\n}\n```\n\n**注意：UploadRequest是一个线程安全的类，可直接注入到你想使用的类中去，不要每次调用上传api时都去调用`UploadRequestBuilder.build()`是没有任何意义的**\n\n\n## 更新日志\n\n### 2019.04.23\n修复了修改缓存文件名不生效的问题 .   \n增加了登陆失败返回的信息以及对unicode的解码 .  \n### 2019.03.30\n优化了重试代码 .  \n修复了重试机制还是不生效的问题 .  \n### 2019.03.25\n修复了重试机制不生效的问题 .  \n### 2019.03.24\n修复了部署到服务器后无法登陆的问题 .  \n修复了返回的图片格式问题 . \n### 2019.03.23\n重构代码，代码结构更清晰稳定，减低各模块的耦合 .  \n修复缓存文件位置错误的问题 .  \n修复上传图片格式问题 .  \n支持了上传gif .  \n### 2018.11.08\n重构了代码，减少第三方依赖，目前只依赖logging，fastjson .  \n将包上传至官方仓库使用更方便 .   \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fechisan%2Fwbp4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fechisan%2Fwbp4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fechisan%2Fwbp4j/lists"}