{"id":19078670,"url":"https://github.com/nidorx/http-request","last_synced_at":"2025-04-30T05:04:09.572Z","repository":{"id":141486836,"uuid":"195666607","full_name":"nidorx/http-request","owner":"nidorx","description":"A very small (160KB, zero dependency) HTTP client for Java using HttpURLConnection","archived":false,"fork":false,"pushed_at":"2020-05-12T15:29:36.000Z","size":173,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-30T05:03:46.175Z","etag":null,"topics":["api-client","basic-auth","basic-authentication","cookies","cookiesession","download-file","http-client","http-requests","httpclient","httpurlconnection","java","json-api-client","jsonapi-library","rest-client","restify"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nidorx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-07T15:20:52.000Z","updated_at":"2024-09-09T19:23:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"8db2ba0a-e7c0-4672-be0c-e30243274d29","html_url":"https://github.com/nidorx/http-request","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nidorx%2Fhttp-request","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nidorx%2Fhttp-request/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nidorx%2Fhttp-request/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nidorx%2Fhttp-request/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nidorx","download_url":"https://codeload.github.com/nidorx/http-request/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251644843,"owners_count":21620632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-client","basic-auth","basic-authentication","cookies","cookiesession","download-file","http-client","http-requests","httpclient","httpurlconnection","java","json-api-client","jsonapi-library","rest-client","restify"],"created_at":"2024-11-09T02:11:24.604Z","updated_at":"2025-04-30T05:04:09.552Z","avatar_url":"https://github.com/nidorx.png","language":"Java","readme":"[![](https://jitpack.io/v/nidorx/http-request.svg)](https://jitpack.io/#nidorx/http-request)\n\n# http-request\n\nA very small (160KB, zero dependency) HTTP client for Java using HttpURLConnection\n\n\n## Install with Maven, on pom.xml:\n\n```\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003ejitpack.io\u003c/id\u003e\n        \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n\n\u003cdependencies\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.github.nidorx\u003c/groupId\u003e\n        \u003cartifactId\u003ehttp-request\u003c/artifactId\u003e\n        \u003cversion\u003e1.0.6\u003c/version\u003e\n    \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n\n## Object JSON request\n\n### simple\n\n```java\nimport com.github.nidorx.http.HttpRequest;\n\nimport java.util.Map;\n\npublic class HttpRequestSimpleDemo {\n\n    public static void main(String[] args) throws Exception {\n\n        String githubUser = \"nidorx\";\n        String githubRepoName = \"http-request\";\n\n        // https://api.github.com/repos/nidorx/http-request\n        Map\u003cString, Object\u003e repo = HttpRequest.build(\"https://api.github.com/repos/{USER}/{REPO}\")\n                .path(\"USER\", githubUser)\n                .path(\"REPO\", githubRepoName)\n                .execute((response, context) -\u003e {\n\n                    return response.fromJson();\n                });\n\n\n        System.out.println(repo.get(\"description\"));\n    }\n}\n```\n\n### Typed resource\n\n```java\nimport com.github.nidorx.http.HttpRequest;\n\npublic class HttpRequestObjectTyped {\n\n    public static void main(String[] args) throws Exception {\n\n        String githubUser = \"nidorx\";\n        String githubRepoName = \"http-request\";\n\n        // https://api.github.com/repos/nidorx/http-request\n        Repository repo = HttpRequest.build(\"https://api.github.com/repos/{USER}/{REPO}\")\n                .path(\"USER\", githubUser)\n                .path(\"REPO\", githubRepoName)\n                .execute((response, context) -\u003e {\n\n                    return response.fromJson(Repository.class);\n                });\n\n        System.out.println(repo.getDescription());\n    }\n\n\n    private static final class Repository {\n\n        String description;\n\n        public String getDescription() {\n            return description;\n        }\n\n        public void setDescription(String description) {\n            this.description = description;\n        }\n    }\n}\n```\n\n\n## Array JSON request\n\n### Simple\n\n```java\nimport com.github.nidorx.http.HttpRequest;\n\nimport java.util.List;\nimport java.util.Map;\n\npublic class HttpRequestArraySimple {\n\n    public static void main(String[] args) throws Exception {\n\n        String githubUser = \"nidorx\";\n\n        // https://api.github.com/users/nidorx/repos?per_page=5\n        List\u003cMap\u003cString, Object\u003e\u003e repos = HttpRequest.build(\"https://api.github.com/users/{USER}/repos\")\n                .path(\"USER\", githubUser)\n                .query(\"per_page\", \"5\")\n                .execute((response, context) -\u003e {\n\n                    return response.fromJsonToList();\n                });\n\n        repos.forEach(repo -\u003e {\n            System.out.println(repo.get(\"description\"));\n        });\n    }\n}\n```\n\n### Typed resource\n\n```java\nimport com.github.nidorx.http.HttpRequest;\nimport com.github.nidorx.http.util.ParameterizedTypeReference;\n\nimport java.util.List;\n\npublic class HttpRequestDemo {\n\n    public static void main(String[] args) throws Exception {\n\n        String githubUser = \"nidorx\";\n\n        // https://api.github.com/users/nidorx/repos?per_page=5\n        List\u003cRepository\u003e content = HttpRequest.build(\"https://api.github.com/users/{USER}/repos\")\n                .path(\"USER\", githubUser)\n                .query(\"per_page\", \"5\")\n                .execute((response, context) -\u003e {\n\n                    return response.fromJson(new ParameterizedTypeReference\u003cList\u003cRepository\u003e\u003e() {});\n                });\n\n        content.forEach(repository -\u003e {\n            System.out.println(repository.getDescription());\n        });\n    }\n\n    private static final class Repository {\n\n        String description;\n\n        public String getDescription() {\n            return description;\n        }\n\n        public void setDescription(String description) {\n            this.description = description;\n        }\n    }\n}\n```\n\n\n## String response (xml, csv, html, etc)\n\nUse `response.content`\n\n```java\nimport com.github.nidorx.http.HttpRequest;\n\npublic class HttpRequestString {\n\n    public static void main(String[] args) throws Exception {\n\n        String htmlContent = HttpRequest.build(\"https://www.google.com\")\n                .execute((response, stringObjectMap) -\u003e {\n\n                    return response.content;\n                });\n\n        System.out.println(htmlContent);\n    }\n}\n```\n\n## Binary download\n\nSet ` .binary(true)` to get `response.data`;\n\n```java\nimport com.github.nidorx.http.HttpRequest;\n\nimport java.io.File;\nimport java.io.FileOutputStream;\n\npublic class HttpRequestBinary {\n\n    public static void main(String[] args) throws Exception {\n\n        HttpRequest.build(\"https://en.wikipedia.org/static/images/project-logos/enwiki.png\")\n                .binary(true)\n                .method(\"GET\")\n                .execute((response, stringObjectMapd) -\u003e {\n\n                    byte[] data = response.data;\n                    FileOutputStream fos = new FileOutputStream(new File(\"WIKI_LOGO.png\"));\n                    fos.write(data, 0, data.length);\n                    fos.flush();\n                    fos.close();\n\n                    return null;\n                });\n    }\n}\n```\n\n\n## Using flow (Context, onSucces, onError, onComplete)\n\n```java\nimport com.github.nidorx.http.HttpRequest;\n\npublic class HttpRequestFlow {\n\n    public static void main(String[] args) throws Exception {\n\n        HttpRequest.build(\"https://www.google.com\")\n                .success((response, context) -\u003e {\n                    context.put(\"value on success\", true);\n\n                    System.out.println(\"Success!\");\n                })\n                .error((response, context) -\u003e {\n                    context.put(\"value on success\", true);\n\n                    System.out.println(\"Error!\");\n                })\n                .complete((response, context) -\u003e {\n                    context.put(\"value on complete\", true);\n\n                    System.out.println(\"Complete!\");\n                })\n                .execute((response, context) -\u003e {\n\n                    context.entrySet().forEach(entry -\u003e {\n                        System.out.println(entry.getKey() + \" -\" + entry.getValue());\n                    });\n\n                    return null;\n                });\n    }\n}\n```\n\n\n## Cookies (Session)\n\n```java\nimport com.github.nidorx.http.HttpRequest;\n\nimport java.net.CookieManager;\n\npublic class HttpRequestCookies {\n\n    public static void main(String[] args) throws Exception {\n\n        CookieManager cookieManager = new CookieManager();\n\n        System.out.println(\"Before 1# request\");\n        print(cookieManager);\n\n        HttpRequest.build(\"https://www.google.com\")\n                .cookieManager(cookieManager)\n                .execute();\n\n\n        System.out.println(\"After 1# request\");\n        print(cookieManager);\n\n        // Reuse same cookies\n        HttpRequest.build(\"https://www.google.com\")\n                .cookieManager(cookieManager)\n                .execute();\n\n        System.out.println(\"After 2# request\");\n        print(cookieManager);\n\n    }\n\n    private static void print(CookieManager cookieManager) {\n        cookieManager.getCookieStore().getCookies().forEach(cookie -\u003e {\n            System.out.println(cookie.toString());\n        });\n    }\n}\n```\n\n\n## Basic Authentication\n\n```java\nimport com.github.nidorx.http.HttpRequest;\n\nimport java.util.Map;\n\npublic class HttpRequestAuthBasic {\n\n    public static void main(String[] args) throws Exception {\n\n        String username = \"nidorx\";\n        String password = \"MY_PASSWORD\";\n\n        // https://developer.github.com/v3/auth/#basic-authentication\n        Map\u003cString, Object\u003e user = HttpRequest.build(\"https://api.github.com/user\")\n                .authBasic(username, password)\n                .path(\"USER\", username)\n                .execute()\n                .fromJson();\n\n        System.out.println(user);\n    }\n}\n\n```\n\n## More ...\n\nPress `Ctrl + Space` on your IDE\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnidorx%2Fhttp-request","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnidorx%2Fhttp-request","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnidorx%2Fhttp-request/lists"}