把 SRT 格式的字幕文件解析为字幕的对象数组,格式为:
1 | [ |
输出效果:
大圣,此去欲何?踏南天,碎凌霄。若一去不回…… 便一去不回!
把 SRT 格式的字幕文件解析为字幕的对象数组,格式为:
1 | [ |
输出效果:
SpringMVC 中在任意地方取得 HttpServletRequest
和 HttpServletResponse
在 web.xml 中注册 RequestContextListener
(SpringMVC 4 不需要这一步)
1 | <listener> |
获取 HttpServletRequest
和 HttpServletResponse
1 | public static String testRequestAndResponse() { |
QQ 提供了标准的 OAuth 2.0 第三方登录功能,可以按照 QQ 互联的文档 (http://wiki.connect.qq.com) 例如使用 HttpClient 进行网络访问,集成 QQ 的第三方登录到我们的系统里,也可以使用 Scribe-Java
来集成 QQ 的第三方登录,这样就会简单很多。
ScribeJava 是一个简单的 Java 实现的 OAuth/OAuth2 库。
ScribeJava Github 仓库:https://github.com/scribejava/scribejava
错误提示:
Project ERROR: Xcode not set up properly. You may need to confirm the license agreement by running /usr/bin/xcodebuild.
解决办法:
打开 Qt_install_folder/5.7/clang_64/mkspecs/features/mac/default_pre.prf
修改
1 | isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null"))) |
为
1 | isEmpty($$list($$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null"))) |
C++ 中比较不错的日志工具有 log4cxx
,log4qt
等,但是它们都不能和 qDebug()
, qInfo()
等有机的结合在一起,所以在 Qt 中使用总觉得不够舒服,感谢 Qt 提供了 qInstallMessageHandler()
这个函数,使用这个函数可以安装自定义的日志输出处理函数,把日志输出到文件,控制台等,具体的使用可以查看 Qt 的帮助文档。
Qt 使用 QNetworkAccessManager
访问 HTTP 服务,这里对其进行了简单的封装,使用流行的 Fluent 风格 API,简化 GET、POST、PUT、DELETE、上传、下载等操作。
在执行请求前设置需要的参数和回调函数:
调用 header()
设置请求头
调用 param()
设置参数,使用 Form 表单的方式提交请求,GET 请求的 query parameters 也可以用它设置
调用 json()
设置 JSON 字符串的 request body,Content-Type 为 application/json
当然也可以不是 JSON 格式,因使用 request body 的情况多数是使用 JSON 格式传递复杂对象,故命名为 json()
调用 success()
注册请求成功的回调函数
调用 fail()
注册请求失败的回调函数
调用 complete()
注册请求结束的回调函数
然后根据请求的类型调用 get()
, post()
, put()
, remove()
, download()
, upload()
执行 HTTP 请求。
success()
,fail()
,complete()
的回调函数是可选的,根据需要注册对应的回调函数,也可以一个都不注册
例如使用 HttpClient 执行 GET 请求的代码可以简化为:
1 | HttpClient("http://localhost:8080/api/rest").success([](const QString &response) { |
Qt 中访问网络使用 QNetworkAccessManager
,它的 API 是异步,这样在访问网络的时候不需要启动一个线程,在线程里执行请求的代码。
需要注意一点的是,请求响应的对象 QNetworkReply
需要我们自己手动的删除,一般都会在 QNetworkAccessManager::finished
信号的曹函数里使用 reply->deleteLater()
删除,不要直接 delete reply
。
本文的最终结果为实现调用一个函数就能访问网络:
1 | QNetworkAccessManager *manager = new QNetworkAccessManager(); |