本文整理汇总了C++中WebRequest::getHeaders方法的典型用法代码示例。如果您正苦于以下问题:C++ WebRequest::getHeaders方法的具体用法?C++ WebRequest::getHeaders怎么用?C++ WebRequest::getHeaders使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WebRequest
的用法示例。
在下文中一共展示了WebRequest::getHeaders方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _connectionLoop
void WebConnection::_connectionLoop() {
uint32_t buffersize = 0;
unsigned char* buffer = NULL;
uint32_t readpos = 0;
for (;;) {
if (READ_SIZE + readpos > buffersize) {
buffersize += READ_SIZE;
buffer = (unsigned char*)realloc(buffer, buffersize);
}
int32_t read = _socket->Receive(&buffer[readpos], READ_SIZE);
if (read <= 0)
break;
readpos += read;
unsigned char* contentStart;
unsigned char* headerStart = buffer;
if ((contentStart = (unsigned char*)memmem(buffer, readpos, "\r\n\r\n", 4)) != NULL) { // Find request end
contentStart += 4;
uint32_t headerLength = _convertNewLines(buffer, contentStart - headerStart);
log_data(LOG_INFO, (char*)buffer, headerLength - 1);
char* cmd = (char*) headerStart;
char* path = NULL;
char* protocol = NULL;
while (headerStart[0] != '\n') {
if (headerStart[0] == ' ') {
if (path == NULL)
path = (char*)&headerStart[1];
else if (protocol == NULL)
protocol = (char*)&headerStart[1];
headerStart[0] = '\0';
}
headerStart++;
headerLength--;
}
headerStart[0] = '\0';
headerStart++;
headerLength--;
WebRequest* request = new WebRequest(cmd, path, protocol);
request->getHeaders()->_parseHeaders((char*)headerStart, contentStart - headerStart);
const char* contentLengthStr;
unsigned char* content = NULL;
uint32_t contentLength = 0;
if ((contentLengthStr = request->getHeaders()->valueForName("Content-Length")) != NULL && (contentLength = atoi(contentLengthStr)) > 0) {
content = (unsigned char*) malloc(contentLength);
uint32_t contentReadPos = readpos - (contentStart - buffer);
memcpy(content, contentStart, contentReadPos);
while (contentReadPos < contentLength) {
int32_t contentRead = _socket->Receive(&content[contentReadPos], contentLength - contentReadPos);
if (contentRead < 0) {
log(LOG_ERROR, "Connection read error");
break;
}
contentReadPos += contentRead;
}
log(LOG_INFO, "(Content of length: %d bytes)\n", contentLength);
}
assert(_processRequestCallback != NULL);
if (contentLength > 0 && content != NULL)
request->_setContent(content, contentLength);
_processRequestCallback(this, request, _callbackCtx);
assert(request->_response->_statusCode < 1000);
if (request->_response->_statusCode == 404 && request->_response->_headers->_headerCount == 0)
request->_response->_headers->addValue("Content-Length", "0");
if (request->_response->_contentLength > 0)
request->_response->_headers->addValue("Content-Length", "%d", request->_response->_contentLength);
uint32_t protocolLen = strlen(request->getProtocol());
uint32_t statusCodeLen = 3;
uint32_t statusMessageLen = strlen(request->_response->_statusMessage);
uint32_t statusLineLen = protocolLen + 1 + statusCodeLen + 1 + statusMessageLen + 2;
uint32_t headersLen = request->_response->_headers->getTotalLength();
//.........这里部分代码省略.........