{"id":48680791,"url":"https://github.com/eeichinger/jcurl","last_synced_at":"2026-04-26T20:00:40.710Z","repository":{"id":5757362,"uuid":"53848352","full_name":"eeichinger/jcurl","owner":"eeichinger","description":"a curl-inspired but java based http command line client","archived":false,"fork":false,"pushed_at":"2022-12-12T21:43:52.000Z","size":63,"stargazers_count":26,"open_issues_count":9,"forks_count":12,"subscribers_count":3,"default_branch":"main","last_synced_at":"2023-03-11T00:07:47.003Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/eeichinger.png","metadata":{"files":{"readme":"README.adoc","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}},"created_at":"2016-03-14T10:46:17.000Z","updated_at":"2023-02-25T03:19:18.000Z","dependencies_parsed_at":"2022-08-28T06:20:25.851Z","dependency_job_id":null,"html_url":"https://github.com/eeichinger/jcurl","commit_stats":null,"previous_names":[],"tags_count":2,"template":null,"template_full_name":null,"purl":"pkg:github/eeichinger/jcurl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eeichinger%2Fjcurl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eeichinger%2Fjcurl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eeichinger%2Fjcurl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eeichinger%2Fjcurl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eeichinger","download_url":"https://codeload.github.com/eeichinger/jcurl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eeichinger%2Fjcurl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32310804,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T19:15:34.056Z","status":"ssl_error","status_checked_at":"2026-04-26T19:15:15.467Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-04-11T01:00:36.064Z","updated_at":"2026-04-26T20:00:40.697Z","avatar_url":"https://github.com/eeichinger.png","language":"Java","funding_links":[],"categories":["网络编程"],"sub_categories":["Spring Cloud框架"],"readme":":toc:\n\n# What is jCurl?\n\njCurl is a curl-inspired, java-based HTTP command line client. It can be distributed as a single executable JAR.\n\n\n# Why jCurl?\n\njCurl was created for several reasons:\n\n- the environment didn't allow for uploading/installing un*x binaries\n- curl \u003c v7.40 has issues with certain SSL cyphers\n- a problem with a Java application and mutual SSL wasn't reproducible with the usual curl or wget tests.\n- a problem with the java keystore\n\nIn order to run tests using code as close as possible to the code used in the applications, jCurl has proven to be a useful utility.\n\n# License\n\njCurl is licensed under Apache License 2.0\n\n# Compatibility\n\njCurl is compiled against Java 8\n\n# Features\n\nUse the --help option to get a list of all features\n\n```\n$\u003ejava -jar jcurl-all.jar --help\n\nStarting jCurl in /Users/admin/workspaces/_ee/jcurl\nUsage: jcurl [options...] \u003curl\u003e\n\nNote: options may be used in their long form with 2 hyphens or abbreviated using 1 hyphen, e.g. '--count 3' and '-c 3' are equivalent\n\nOption                 Description\n------                 -----------\n-H, --header           header syntax equivalent to curl, e.g.\n                         '-H \"Accept: application/json\"'\n-c, --count \u003cInteger\u003e  repeat call x times\n-e, --engine           which engine to use ('url': java.net.\n                         URL, 'hcnio': Apache\n                         AsyncHttpClient), default is 'url'\n-h, --help             print help\n-v, --verbose          activate verbose logging\n```\n\nCurrently available engines are:\n\n- url:\n    java.net.URL (https://docs.oracle.com/javase/8/docs/api/java/net/URL.html)\n- hc:\n    Apache HttpClient (https://hc.apache.org/httpcomponents-client-ga/)\n- hcnio:\n    Apache HttpAsyncClient (https://hc.apache.org/httpcomponents-asyncclient-4.1.x/index.html)\n- nnio:\n    Netty 4 NIO Client (http://netty.io/wiki/user-guide-for-4.x.html#wiki-h3-10)\n- okhttp:\n    OkHttp Client (http://square.github.io/okhttp/)\n- jetty:\n    Jetty Http Client (http://www.eclipse.org/jetty/documentation/current/http-client.html)\n\n\n# Example Usages\n\n## submit multiple requests\n\n``` sh\njava \\\n    -jar jcurl-all.jar \\\n    -H \"accept: application/xml\" \\\n    --count 3 \\\n    --engine hcnio \\\n    http://example.com/some/url\n```\n\nrepeats the same request 3 times, using Apache HttpAsyncClient.\n\n\n## submit request with mutual SSL\n\nIn order to submit HTTPS requests, you need to use the usual JVM properties to specify trust-/keystores, e.g.\n\n``` sh\n# ./jcurl_sample_ssl.sh\n\nJVMARGS=\"$JVMARGS -Djavax.net.debug=ssl,handshake\" # for debug output\nJVMARGS=\"$JVMARGS -Djavax.net.ssl.keyStore=mykeystore.jks -Djavax.net.ssl.keyStorePassword=changeit\"\n\njava $JVMARGS \\\n    -jar jcurl-all.jar \\\n    -H \"accept: application/xml\" \\\n    --engine url \\\n    http://example.com/some/url\n```\n\n## useful JVM arguments\n\n1) debug SSL Handshake etc (see http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/ReadDebug.html)\n```\n -Djavax.net.debug=ssl,handshake\n```\n\n2) specify truststore and keystore (see http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html#SSLOverview)\n```\n  -Djavax.net.ssl.keyStoreType=\u003cjks|PKCS12\u003e -Djavax.net.ssl.keyStore=./path/to/keystore.jks -Djavax.net.ssl.keyStorePassword=\u003cpassword\u003e\n  -Djavax.net.ssl.trustStoreType=\u003cjks|PKCS12\u003e -Djavax.net.ssl.trustStore=./path/to/truststore.jks -Djavax.net.ssl.trustStorePassword=\u003cpassword\u003e\n```\n\n\n3) specify proxies (see https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html)\n```\n  HTTP: -Dhttp.proxyHost=webcache.example.com -Dhttp.proxyPort=8080\n  HTTPS: -Dhttps.proxyHost=webcache.example.com -Dhttps.proxyPort=8080\n  SOCKS: -DsocksProxyHost=webcache.example.com -DsocksProxyPort=1080\n```\n\n\n# How to build\n\nIn order to build you need to have Java \u003e=8 and Maven \u003e= 3 installed. Then simply run\n\n```\nmvn clean package\n```\n\nthe resulting binary will be placed in the root of the project as `jcurl-all.jar`\n\n# TODOs\n\nCurrently only GET requests are supported. If you would like to see more/other features or find a bug, please\n\n1. create a ticket\n2. send a pull request\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feeichinger%2Fjcurl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feeichinger%2Fjcurl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feeichinger%2Fjcurl/lists"}