1

我正在为代码片段苦苦挣扎好几天,我想知道是否有人可以帮助我理解这个代码片段。我不是要任何代码,只是有人向我解释一下:(uri似乎是服务的完整url)

    void RestClient::_prepareRequest( QNetworkRequest& a_request, const QString& a_uri ){ 
        QSslConfiguration config(QSslConfiguration::defaultConfiguration());
        config.setProtocol(QSsl::SslV3);
        config.setSslOption(QSsl::SslOptionDisableServerNameIndication, true);
        a_request.setSslConfiguration(config);
        a_request.setRawHeader("Accept", "application/xml");
        a_request.setRawHeader("Content-Type", "application/x-www-form-urlencoded");
        QByteArray l_api_key; l_api_key.append( toQString( m_api_key) );
        QByteArray l_request_hash; 
    l_request_hash.append( toQString( _buildRequestHash( toStlString(a_uri) ) ) );
        a_request.setRawHeader("EMApikey", l_api_key );
        a_request.setRawHeader("EMRequestHash", l_request_hash );


        a_request.setUrl( QUrl( a_uri ) );
    }
4

1 回答 1

2

因此,您所得到的是一个带有两个参数的函数,一个对 a 的引用和一个对您希望访问的 URIQNetworkRequest的常量引用。QString下一行设置QSslConfiguration为获取 Qt 网络访问的默认 SSL 配置,并将其存储在 config.xml 中。然后它会设置一些进一步QSsl的选项,然后设置您刚刚设置a_request的 SSL 设置。config

接下来,它为请求设置了一些 HTTP 标头,因此这些标头是合理标准化的,因此Accept参考什么样的信息对于来自服务器的响应是可接受的,在这种情况下是xml接受标头文档)。Content-type告诉接收服务器您在请求正文中发送的数据类型。

最后阶段设置一个非标准的 HTTP 头,用于应用程序 API 访问密钥,然后设置您最初传递的 URL,功能完成。之后,QNetworkRequest可以使用 withQNetworkAccessManager向服务器发送请求,其中包含编码的 API 密钥,您将收到 XML 响应作为回报。

于 2013-11-04T11:02:02.367 回答