//------------------------------------------------------------------------------ void WebServiceClient::call(char *uri, char *content, void (*successHandler)(int rc), void (*failureHandler)(int rc), int requestTimeout, char *contentType) { Client wsclient(this->serverAddr, this->serverPort); if (wsclient.connect()) { // Send HTTP POST to the server sprintf(this->buffer, "POST %s HTTP/1.1", uri); wsclient.println(this->buffer); sprintf(this->buffer, "Host: %d.%d.%d.%d:%d", this->serverAddr[0], this->serverAddr[1], this->serverAddr[2], this->serverAddr[3], this->serverPort); wsclient.println(this->buffer); sprintf(this->buffer, "User-Agent: %s", this->userAgent); wsclient.println(this->buffer); sprintf(this->buffer, "Content-Length: %d", strlen(content)); wsclient.println(this->buffer); sprintf(this->buffer, "Content-Type: %s", contentType); wsclient.println(this->buffer); sprintf(this->buffer, "Accept: %s", contentType); wsclient.println(this->buffer); wsclient.println(); // Post web service input data wsclient.println(content); // Pause for web service to complete unsigned long startTime = millis(); while ((!wsclient.available()) && ((millis() - startTime) < requestTimeout)); // Read the response int rc = parse_http_status(&wsclient); if (rc == HTTP_STATUS_SUCCESS) { if (successHandler != NULL) { successHandler(rc); } } else { if (failureHandler != NULL) { failureHandler(rc); } } flush_content(&wsclient); // Disconnect from the server wsclient.flush(); wsclient.stop(); } else { if (failureHandler != NULL) { failureHandler(-1); } } }
BSLS_ASSERT_NORETURN_INVOKE_HANDLER void Assert::invokeHandler(const char *text, const char *file, int line) { failureHandler()(text, file, line); }