//------------------------------------------------------------------------------
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);
      }
  }

}
Пример #2
0
BSLS_ASSERT_NORETURN_INVOKE_HANDLER
void Assert::invokeHandler(const char *text, const char *file, int line)
{
    failureHandler()(text, file, line);
}