2013-11-04 107 views
1

我现在正在为一段代码苦苦挣扎,我在想如果有人能帮我理解这段代码片段。我不要求对任何代码,就有人向我解释这个请:(一URI似乎是完整的URL到服务)Qt代码解析

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)); 
    } 
+2

a_uri似乎是URL。其余的则组装一个http(s)请求。你特别喜欢哪一点? –

+0

谢谢你回答Osterfeld先生。我正在用setRawHeader方法挣扎,它们是干什么用的?我找不到答案。此外,为什么Http请求很长。我看到一些比这个更短的请求。预先感谢您的任何答案。 –

回答

2

所以,你有什么有服用两个功能参数,对QNetworkRequest的引用以及对您希望访问的URI的常量引用(QString)。接下来的行设置为QSslConfiguration以获取Qt网络访问的默认SSL配置,并将其存储在配置中。然后,它会设置一些QSsl选项,然后设置a_request的SSL设置由您刚刚设置的config提供。

接下来它设置请求的HTTP标头,所以这些都是合理标准化的,所以Accept引用什么样的信息是用于从在这种情况下是xmlAccept header documentation)服务器的响应是可接受的。 Content-type通知接收方服务器您在请求正文中发送了哪些数据。

最后一个阶段设置一个非标准的HTTP头,它用于应用程序API访问键,然后它设置您最初传递的URL和函数完成的URL。在此之后,QNetworkRequest可以与QNetworkAccessManager一起使用,将请求发送到服务器,并使用编码的API密钥,您将收到XML响应作为回报。

+0

谢谢您花时间回答,很好的解释!非常感谢你 ! –

+0

如果它对我没有好奇,我可以问你,如果你在objective-c中为ios编码? –

+0

是的,我也做了一些Objective-C。 –