两个博客系统互通——从 blog 发表文章同步到 solo 系统

本贴最后更新于 2159 天前,其中的信息可能已经时过境迁

2018/8/24 18:42分

blog系统基本上是从0开始开发代码,包括vue,java,数据库设计。大概从2018/1/12开始

blog博客地址:http://yhmpianzi.imwork.net:9902

solo博客地址:http://yhmpianzi.imwork.net:8888/solo


两个博客地址都部署在thinkCenter上。通过花生壳做的域名:yhmpianzi.imwork.net。在电信猫上做的端口映射。以至于在外网能访问

以下是两个博客系统同步文章关键代码,比较low

blog同步关键代码:

//文章推送mysolo博客系统
            JSONObject jsonObject= new JSONObject();
            JSONObject jsonObject2= new JSONObject();
        jsonObject.put(<span class="hljs-string">"userEmail"</span>, blogArticleWithBLOBs.getArticleAuthorEmail());
        jsonObject2.put(<span class="hljs-string">"articleCommentable"</span>, <span class="hljs-keyword">true</span>);
        jsonObject2.put(<span class="hljs-string">"articleContent"</span>, blogArticleWithBLOBs.getArticleContent());
        jsonObject2.put(<span class="hljs-string">"articleIsPublished"</span>, <span class="hljs-keyword">true</span>);
        jsonObject2.put(<span class="hljs-string">"articleSignId"</span>, <span class="hljs-string">"1"</span>);
        jsonObject2.put(<span class="hljs-string">"articleTags"</span>, blogArticleWithBLOBs.getArticleTags());
        jsonObject2.put(<span class="hljs-string">"articleTitle"</span>, blogArticleWithBLOBs.getArticleTitle());
        jsonObject2.put(<span class="hljs-string">"articleViewPwd"</span>, <span class="hljs-string">""</span>);<span class="hljs-comment">//文章查看密码默认为空</span>
        jsonObject2.put(<span class="hljs-string">"postToCommunity"</span>, <span class="hljs-keyword">true</span>);
        String abstractStr = blogArticleWithBLOBs.getArticleContent().length() &gt;= <span class="hljs-number">30</span> ? blogArticleWithBLOBs.getArticleContent().substring(<span class="hljs-number">0</span>, <span class="hljs-number">29</span>) : blogArticleWithBLOBs.getArticleContent();
        jsonObject2.put(<span class="hljs-string">"articleAbstract"</span>, abstractStr);
        jsonObject.put(<span class="hljs-string">"article"</span>, jsonObject2);
        logger.info(<span class="hljs-string">"文章开始同步mysolo博客系统入参:"</span> + jsonObject.toString());

// String resultStr = HttpUtils.post(CommonConst.mysoloSaveArticleUrl, jsonObject.toString());
// boolean resultStr = HttpClientUtils.post(CommonConst.mysoloSaveArticleUrl, jsonObject.toString(), 100000);
String resultStr = MyHttpUtils.post(CommonConst.mysoloSaveArticleUrl, jsonObject.toString(), 100000);

        logger.info(<span class="hljs-string">"文章同步mysolo博客系统结果:"</span> + resultStr);</code></pre><p>solo文章同步保存接口定义:</p><pre style="max-width:100%;overflow-x:auto;"><code class="java hljs" codemark="1">   <span class="hljs-meta">@RequestProcessing</span>(value = <span class="hljs-string">"/console/saveArticleForBlog/"</span>, method = HTTPRequestMethod.POST)
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">saveArticleForBlog</span><span class="hljs-params">(<span class="hljs-keyword">final</span> HttpServletRequest request, <span class="hljs-keyword">final</span> HttpServletResponse response, <span class="hljs-keyword">final</span> HTTPRequestContext context,
                              <span class="hljs-keyword">final</span> JSONObject requestJSONObject)</span> <span class="hljs-keyword">throws</span> Exception </span>{

    LOGGER.info(<span class="hljs-string">"创建文章:"</span> + requestJSONObject.toString());
    <span class="hljs-keyword">final</span> JSONRenderer renderer = <span class="hljs-keyword">new</span> JSONRenderer();
    context.setRenderer(renderer);
    <span class="hljs-keyword">final</span> JSONObject ret = <span class="hljs-keyword">new</span> JSONObject();

    <span class="hljs-keyword">try</span> {
        String email = requestJSONObject.getString(User.USER_EMAIL) != <span class="hljs-keyword">null</span> ?
                requestJSONObject.getString(User.USER_EMAIL) : <span class="hljs-string">""</span>;

        JSONObject jsonObject = userRepository.getByEmail(email);
        LOGGER.info(<span class="hljs-string">"通过email得到的用户信息:"</span> + jsonObject.toString());
        requestJSONObject.getJSONObject(Article.ARTICLE).put(Article.ARTICLE_AUTHOR_EMAIL, jsonObject.getString(User.USER_EMAIL));

        <span class="hljs-comment">//保存文章</span>
        <span class="hljs-keyword">final</span> String articleId = articleMgmtService.addArticle(requestJSONObject);
        ret.put(Keys.OBJECT_ID, articleId);
        ret.put(Keys.MSG, langPropsService.get(<span class="hljs-string">"addSuccLabel"</span>));
        ret.put(Keys.STATUS_CODE, <span class="hljs-keyword">true</span>);

        renderer.setJSONObject(ret);
    } <span class="hljs-keyword">catch</span> (<span class="hljs-keyword">final</span> ServiceException e) {
        LOGGER.log(Level.ERROR, e.getMessage());

        <span class="hljs-keyword">final</span> JSONObject jsonObject = QueryResults.defaultResult();
        jsonObject.put(Keys.MSG, e.getMessage());
        renderer.setJSONObject(jsonObject);
    }
}</code></pre><p><br></p><p>第一篇同步文章:</p><p>图1</p><p><img src="http://p57h8rh2b.bkt.clouddn.com/file/1535100584161.png" alt=""><br></p><p>图2</p><p><img src="http://p57h8rh2b.bkt.clouddn.com/file/1535100614913.png" alt=""><br></p><p><br></p>
  • 博客

    记录并分享人生的经历。

    272 引用 • 2386 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    可以考虑开始对接评论同步了 :)

  • 其他回帖
  • someone

    大神来我这里看了啊,真的感觉到非常荣幸😋 ,我关注 solo 博客有好几年了,自己也搭建过低版本的用过,感觉挺好的,solo 越来越好!!!

推荐标签 标签

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 257 关注
  • 自由行
    1 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 429 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    6 引用 • 15 回帖 • 182 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 48 关注
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    77 引用 • 159 回帖
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    35 引用 • 35 回帖
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 31 回帖 • 8 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    26 引用 • 85 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖
  • 创业

    你比 99% 的人都优秀么?

    83 引用 • 1398 回帖
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖 • 1 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    386 引用 • 1226 回帖 • 593 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 641 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    103 引用 • 126 回帖 • 443 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 239 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    923 引用 • 936 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    16 引用 • 7 回帖 • 1 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 520 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 3 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    148 引用 • 257 回帖
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 94 关注