我用C ++编写需要从HTTPS URL下载JSON数据的程序。该程序基于wxWidgets。该网址适用于Glosbe
的翻译服务所以我尝试了多个不同的库,包括:
然而,它总是会抛出一个错误,说它无法连接,或者我得到一个回复,表示"永久移动"。
当我将我正在测试它的URL复制并粘贴到浏览器中时,它会完美地返回JSON数据。
有谁知道这样做的正确方法?
任何帮助都会很棒!
答案 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支持。”