protected void sendRequest(StatesOfClient state) {
		resetState();
		setState(state);
		pmfc.printWhichStateIsTesting();

		try {
			if (CURL_HTTP_PORT != 443) {
				client = vertx.createHttpClient().setPort(CURL_HTTP_PORT).setHost(CURL_HTTP_HOST);
			} else {
				client = vertx.createHttpClient().setSSL(true).setTrustAll(true).setPort(CURL_HTTP_PORT).setHost(CURL_HTTP_HOST);
			}

			mCurlCommandsSetter = mCurlCommandsSetterFactory.createSetter(getState());
			mCurlCommandsSetter.execute(state);

			pmfc.printCurrentRequestAndPathInCurlCommand();
			requestSendFromClienttoServer = client.request(BehaviorOfCurlCommandsSetter.currentRequest, BehaviorOfCurlCommandsSetter.currentPath, new Handler<HttpClientResponse>() {
				/*
				 * This handler recieves SerΩ©ver response
				 */
				@Override
				public void handle(HttpClientResponse responseRecievedAtClientFromServer) {
					statusCode = responseRecievedAtClientFromServer.statusCode();
					responseRecievedAtClientFromServer.bodyHandler(new Handler<Buffer>() {
						/*
						 * This handler recieves Server response
						 * body buffer from previous handler
						 */
						@Override
						public void handle(Buffer body) {
							try {
								try {
									pmfc.printMessageFromServer(body);
									currentServerResponseInJsonFormat = new JsonObject(body.toString());
									getDataFromDB();
								} catch (Exception e) {

								}
								mAssertionChecker = mAssertionCheckerFactory.createChecker(getState());
								mAssertionChecker.execute(getState());

							} catch (Exception e) {
								e.printStackTrace();
							} finally {
								pmfc.printEnd();
								testComplete();
							}
						}
					});
				}
			}).exceptionHandler(new Handler<Throwable>() {
				@Override
				public void handle(Throwable t) {
					t.printStackTrace();
				}
			});

			try {
				headersSetUp();
				jsonBodySetUp();
			} catch (Exception e) {

			}
		} catch (Exception e) {
			fail(e.getMessage());
		} finally {
			if (client != null) {
				client.close();
			}
		}
	}