diff --git a/src/hlua.c b/src/hlua.c
index e997964..4e86a18 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -7007,7 +7007,7 @@
  * in the lua buffer, once the httpclient finished its job, push the result on
  * the stack
  */
-__LJMP static int hlua_httpclient_get_yield(lua_State *L, int status, lua_KContext ctx)
+__LJMP static int hlua_httpclient_send_yield(lua_State *L, int status, lua_KContext ctx)
 {
 	struct buffer *tr;
 	int res;
@@ -7045,17 +7045,15 @@
 		task_wakeup(hlua->task, TASK_WOKEN_MSG);
 
 
-	MAY_LJMP(hlua_yieldk(L, 0, 0, hlua_httpclient_get_yield, TICK_ETERNITY, 0));
+	MAY_LJMP(hlua_yieldk(L, 0, 0, hlua_httpclient_send_yield, TICK_ETERNITY, 0));
 	return 0;
 }
 
 /*
- * Sends and receive an HTTP request
- *
- * httpclient.get(url, headers)
+ * Send an HTTP request and wait for a response
  */
 
-__LJMP static int hlua_httpclient_get(lua_State *L)
+__LJMP static int hlua_httpclient_send(lua_State *L, enum http_meth_t meth)
 {
 	struct hlua_httpclient *hlua_hc;
 	struct hlua *hlua;
@@ -7102,6 +7100,58 @@
 }
 
 /*
+ * Sends an HTTP HEAD request and wait for a response
+ *
+ * httpclient:head(url, headers, payload)
+ */
+__LJMP static int hlua_httpclient_head(lua_State *L)
+{
+	return hlua_httpclient_send(L, HTTP_METH_HEAD);
+}
+
+/*
+ * Send an HTTP GET request and wait for a response
+ *
+ * httpclient:get(url, headers, payload)
+ */
+__LJMP static int hlua_httpclient_get(lua_State *L)
+{
+	return hlua_httpclient_send(L, HTTP_METH_GET);
+
+}
+
+/*
+ * Sends an HTTP PUT request and wait for a response
+ *
+ * httpclient:put(url, headers, payload)
+ */
+__LJMP static int hlua_httpclient_put(lua_State *L)
+{
+	return hlua_httpclient_send(L, HTTP_METH_PUT);
+}
+
+/*
+ * Send an HTTP POST request and wait for a response
+ *
+ * httpclient:post(url, headers, payload)
+ */
+__LJMP static int hlua_httpclient_post(lua_State *L)
+{
+	return hlua_httpclient_send(L, HTTP_METH_POST);
+}
+
+
+/*
+ * Sends an HTTP HEAD request and wait for a response
+ *
+ * httpclient:delete(url, headers, payload)
+ */
+__LJMP static int hlua_httpclient_delete(lua_State *L)
+{
+	return hlua_httpclient_send(L, HTTP_METH_DELETE);
+}
+
+/*
  *
  *
  * Class TXN
@@ -11747,6 +11797,10 @@
 	lua_pushstring(L, "__index");
 	lua_newtable(L);
 	hlua_class_function(L, "get",         hlua_httpclient_get);
+	hlua_class_function(L, "head",        hlua_httpclient_head);
+	hlua_class_function(L, "put",         hlua_httpclient_put);
+	hlua_class_function(L, "post",        hlua_httpclient_post);
+	hlua_class_function(L, "delete",      hlua_httpclient_delete);
 	lua_settable(L, -3); /* Sets the __index entry. */
 
 
