使用C ++从HTTPS请求JSON数据?

时间:2015-07-16 20:11:44

标签: c++ json https boost-asio wxwidgets

我用C ++编写需要从HTTPS URL下载JSON数据的程序。该程序基于wxWidgets。该网址适用于Glosbe

的翻译服务

所以我尝试了多个不同的库,包括:

  • 的libcurl
  • Boost.Asio的
  • wxWidgets中包含的http功能
  • wxCurl
  • Urdl

然而,它总是会抛出一个错误,说它无法连接,或者我得到一个回复​​,表示"永久移动"。

当我将我正在测试它的URL复制并粘贴到浏览器中时,它会完美地返回JSON数据。

有谁知道这样做的正确方法?

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:4)

301永久移动是当您尝试使用HTTP而不是HTTPS访问页面时服务器响应的内容。这是我刚从服务器收到的完整回复:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 16 Jul 2015 20:25:01 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://en.glosbe.com/a-api

这意味着: “您正在寻找的内容实际上是https://en.glosbe.com/a-api。” 您的浏览器只需遵循HTTP协议即可当您尝试访问https://en.glosbe.com/a-api时,服务器提示并自动继续请求http://en.glosbe.com/a-api。它可以作为用户无缝地工作。

您必须阅读更多文档才能自行创建HTTPS请求。您提到的每个库都有不同的支持HTTPS的方式(或根本不支持它)。例如,看一下http://www.boost.org/doc/libs/1_58_0/doc/html/boost_asio/overview/ssl.html,特别是“Notes”部分,其中说“OpenSSL需要使用Boost.Asio的SSL支持。”

相关问题