let new_ meth ?uri_obj ?uri (* ?header ?content *) () =
  let sv =
    match uri_obj, uri with
        NoneNone ->
          failwith ("Pl_HTTP_Request.new_ must be called with either a "^
                    "~uri_obj (URI object) or ~uri (string) parameter.")
      | Some (uri_obj : uri), None ->
          call_class_method "HTTP::Request" "new" [sv_of_string meth;
                                                   uri_obj#sv]
      | _, Some uri ->
          call_class_method "HTTP::Request" "new" [sv_of_string meth;
                                                   sv_of_string uri]
  in
  new http_request sv