{"id":35611163,"url":"https://github.com/gturri/aXMLRPC","last_synced_at":"2026-01-10T21:01:29.390Z","repository":{"id":1539742,"uuid":"2580849","full_name":"gturri/aXMLRPC","owner":"gturri","description":"A lightweight Java XML-RPC client for the use with Android. Since there is absolutely no dependency to any android specific library (and I assure, that it never will have any), it also works fine in normal Java applications. Read the README.md file for more information.","archived":false,"fork":false,"pushed_at":"2025-08-02T11:21:55.000Z","size":454,"stargazers_count":146,"open_issues_count":3,"forks_count":75,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-11-12T21:24:46.250Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"www.timroes.de","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gturri.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog","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":"2011-10-15T07:42:57.000Z","updated_at":"2025-11-05T06:35:56.000Z","dependencies_parsed_at":"2025-02-26T07:11:13.759Z","dependency_job_id":"5083934a-95ed-4588-82a4-29a6af31bf14","html_url":"https://github.com/gturri/aXMLRPC","commit_stats":{"total_commits":211,"total_committers":17,"mean_commits":"12.411764705882353","dds":0.6445497630331753,"last_synced_commit":"a9e9f18f99156c18bf70b45dc98f730baa812831"},"previous_names":["timroes/axmlrpc"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/gturri/aXMLRPC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gturri%2FaXMLRPC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gturri%2FaXMLRPC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gturri%2FaXMLRPC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gturri%2FaXMLRPC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gturri","download_url":"https://codeload.github.com/gturri/aXMLRPC/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gturri%2FaXMLRPC/sbom","scorecard":{"id":447650,"data":{"date":"2025-08-11","repo":{"name":"github.com/gturri/aXMLRPC","commit":"a6cfe2978d3adeb3ba734476c4b7d320c458b106"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.9,"checks":[{"name":"Maintained","score":0,"reason":"1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":1,"reason":"Found 3/25 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: android-no-reg/gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/gturri/aXMLRPC/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/gturri/aXMLRPC/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/gturri/aXMLRPC/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/gturri/aXMLRPC/codeql-analysis.yml/main?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 8 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T07:17:34.822Z","repository_id":1539742,"created_at":"2025-08-19T07:17:34.822Z","updated_at":"2025-08-19T07:17:34.822Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28258096,"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","status":"online","status_checked_at":"2026-01-10T02:00:06.867Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-01-05T04:00:44.714Z","updated_at":"2026-01-10T21:01:29.358Z","avatar_url":"https://github.com/gturri.png","language":"Java","funding_links":[],"categories":["开发框架"],"sub_categories":["RPC框架"],"readme":"```\n  ___________________________________\n/ This repo has moved to              \\\\\n\\\\ https://codeberg.org/gturri/aXMLRPC /\n  -----------------------------------\n         \\   ^__^ \n          \\  (oo)\\_______\n             (__)\\       )\\/\\\\\n                 ||----w |\n                 ||     ||\n```\n\n\n\nWhat is aXMLRPC?\n================\n\naXMLRPC is a Java library with a leightweight XML-RPC client. XML-RPC is\na specification for making remote procedure calls over the HTTP protocol\nin an XML format. The specificationc can be found under http://www.xmlrpc.com/spec.\n\nYou can control the client with some flags to extend its functionality. See the section\nabout flags.\n\nHow to include it?\n==================\n\nHow to include the aXMLRPC client into your project?\nThere are several ways to do that:\n\n### Include the source code\n\nYou can just include all the source code from the `src` directory into the sourcecode\nof your project. If you use git yourself, you can use submodules to include the code \nas a module to yours. So you will always stay up to date with the library.\n\n### Compile it as library\n\naXMLRPC uses maven, so you can build it using\n\n    mvn install\n\n### Use Maven\n\nTo use it on your Maven project, add it as a dependency on your pom.xml file:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003efr.turri\u003c/groupId\u003e\n    \u003cartifactId\u003eaXMLRPC\u003c/artifactId\u003e\n    \u003cversion\u003eX.Y.Z\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nwhere X.Y.Z is the current aXMLRPC version\n\n\nHow to use the library?\n=======================\n\nYou can use the library by initiating an `XMLRPCClient` and make calls over it:\n\n```java\ntry {\n\tXMLRPCClient client = new XMLRPCClient(new URL(\"http://example.com/xmlrpc\"));\n\n\tBoolean b = (Boolean)client.call(\"isServerOk\");\n\tInteger i = (Integer)client.call(\"add\", 5, 10);\n} catch(XMLRPCServerException ex) {\n\t// The server throw an error.\n} catch(XMLRPCException ex) {\n\t// An error occured in the client.\n} catch(Exception ex) {\n\t// Any other exception\n}\n```\n\nInstead of passing the parameters as seperated values, you can also pack them in\nan array and pass the array to the method, like in the following example:\n\n```java\n// ... The try-catch has been ommited for clarity.\nXMLRPCClient client = new XMLRPCClient(url, \"MyUserAgentString\");\nclient.call(\"someMethod\", new Object[]{ o1, o2, o3 });\n// ...\n```\n\n#### Asynchronous Calls\n\nThe above method calls are synchronous. So the method `call` will return when the server responded\nor an error occured. There is also a possibility for asynchronous server calls.\nYou need to implement an XMLRPCCallback that will get noticed about the respone (or error) from\nthe server. The `callAsync` method can be used to make asynchronous calls. It returns an identifier\nthat will also be send to the XMLRPCCallback instance with the response of the server, so your\napplication can make multiple calls concurrently and use one listener for them, that distinguish \nbetween the different request by their ids.\n\n```java\nXMLRPCCallback listener = new XMLRPCCallback() {\n\tpublic void onResponse(long id, Object result) {\n\t\t// Handling the servers response\n\t}\n\tpublic void onError(long id, XMLRPCException error) {\n\t\t// Handling any error in the library\n\t}\n\tpublic void onServerError(long id, XMLRPCServerException error) {\n\t\t// Handling an error response from the server\n\t}\n};\n\nXMLRPCClient client = new XMLRPCClient(url);\nlong id = client.callAsync(listener, \"add\", 5, 10);\n```\n\nYou will be also able to cancel an asynchonous call. Just use the `cancel` method on the `XMLRPCClient` instance,\nlike in the following example. The listener will not be notified, if the call is canceled.\n\n```java\nXMLRPCClient client = new XMLRPCClient(url);\nlong id = client.callAsync(listener, \"method\", params);\n// ...\nclient.cancel(id);\n```\n\nThe data types\n--------------\n\nThe specification give some data tags for the server response. If you want to work on the\ntype you must cast the returning `Object` from the `call` method to its specific type.\nWhich type to cast which XML server response, tells the following list:\n\n`i4`,`int`\t=\u003e `Integer`\n\n`boolean`\t=\u003e `Boolean`\n\n`string`\t=\u003e `String`\n\n`double`\t=\u003e `Double`\n\n`dateTime.iso8601`\t=\u003e `Date`\n\n`base64`\t=\u003e `byte[]` (`Byte[]` won't work)\n\n`array`\t\t=\u003e `Object[]`\n\n`struct`\t=\u003e `Map\u003cString,Object\u003e`\n\n`i8`\t\t=\u003e `Long` (see Flags)\n\n\nFlags\n-----\n\nThe client takes as second parameter (or third if an user agent is given) \na combination of multiple flags. It could work like the following example:\n\n```java\n// ...\nXMLRPCClient client = new XMLRPCClient(url, \n\tXMLRPCClient.FLAGS_STRICT | XMLRPCClient.FLAGS_8BYTE_INT);\n// ...\n```\n\nThe following flags are implemented:\n\n\n#### FLAGS_STRICT\n\nThe client should parse responses strict to specification.\nIt will check if the given content-type is right.\nThe method name in a call must only contain of A-Z, a-z, 0-9, _, ., :, /\nNormally this is not needed.\n\n\n#### FLAGS_8BYTE_INT\n\nThe client will be able to handle 8 byte integer values (longs).\nThe xml type tag `\u003ci8\u003e` will be used. This is not in the specification\nbut some libraries and servers support this behaviour.\nIf this isn't enabled you cannot recieve 8 byte integers and if you try to\nsend a long, the value must be within the 4 byte integer range.\n\n\n#### FLAGS_ENABLE_COOKIES\n\nWith this flag, the client will be able to handle cookies, meaning saving cookies\nfrom the server and sending it with every other request again. This is needed\nfor some XML-RPC interfaces that support login.\n\n\n#### FLAGS_NIL\n\nThe client will be able to send `null` values. A `null` value will be send\nas `\u003cnil/\u003e`. This extension is described under: http://ontosys.com/xml-rpc/extensions.php\n\n\n#### FLAGS_IGNORE_STATUSCODE\n\nWith this flag enabled, the XML-RPC client will ignore the HTTP status\ncode of the response from the server. According to specification the\nstatus code must be 200. This flag is only needed for the use with \nnot standard compliant servers.\n\n\n#### FLAGS_FORWARD\n\nWith this flag enabled, the client will forward the request, if\nthe 301 or 302 HTTP status code has been received. If this flag is not\nset, the client will throw an exception on these HTTP status codes.\n\n\n#### FLAGS_SSL_IGNORE_INVALID_HOST\n\nWith this flag enabled, the client will ignore, if the URL doesn't match\nthe SSL Certificate. This should be used with caution. Normally the URL\nshould always match the URL in the SSL certificate, even with self signed\ncertificates.\n\n\n#### FLAGS_SSL_INGORE_INVALID_CERT\n\nWith this flag enabled, the client will ignore all unverified SSL/TLS \ncertificates. This must be used, if you use self-signed certificates\nor certificated from unknown (or untrusted) authorities.\n\n\n#### FLAGS_DEFAULT_TYPE_STRING\n\nWith this flag enabled, a value with a missing type tag, will be parsed\nas a string element. This is just for incoming messages. Outgoing messages\nwill still be generated according to specification.\n\n\n#### FLAGS_IGNORE_NAMESPACES\nWith this flag enabled, the client ignores all namespaces\nused within the response from the server.\n\n\n#### FLAGS_USE_SYSTEM_PROXY\nWith this flag enabled, the XMLRPCClient will use the system http\nproxy to connect to the XML-RPC server.\n\n\n#### FLAGS_NO_STRING_ENCODE\nBy default outgoing string values will be encoded according to specification.\nMeaning the \u0026 sign will be encoded to `\u0026amp;` and the \"less then\" sign to `\u0026lt;`.\nIf you set this flag, the encoding won't be done for outgoing string values.\nSee `FLAGS_NO_STRING_DECODE` for the counterpart.\n\n\n#### FLAGS_NO_STRING_DECODE\nThis prevents the decoding of incoming strings, meaning `\u0026amp;` and `\u0026lt;`\nwon't be decoded to the \u0026 sign and the \"less then\" sign. See\n`FLAGS_NO_STRING_ENCODE` for the counterpart.\n\n#### FLAGS_DEBUG\nWill display additional information on the console.\nDo not use it in production.\n\n#### FLAGS_ACCEPT_NULL_DATE\nBy default a response with an empty date (eg: `\u003cvalue\u003e\u003cdateTime.iso8601/\u003e\u003c/value\u003e`)\nis invalid and hence throws an exception.\nWith this flag, this input is accepted, and returns a null date\n\nMeta Flags\n----------\n\nThis can be used exactly the same as normal flags. But each meta flag is just a\ncollection of different other flags. There is no functional difference in using\na meta flag or all the containing flags. For detailed documentation on the single\nflags read the above section.\n\n\n#### FLAGS_SSL_IGNORE_ERRORS\n\nThis flag disables all SSL warnings. It is an alternative to use\nFLAGS_SSL_IGNORE_INVALID_CERT | FLAGS_SSL_IGNORE_INVALID_HOST.\n\n\n#### FLAGS_APACHE_WS\n\nThis flag should be used if the server is an apache ws xmlrpc server.\nThis will set some flags, so that the not standard conform behavior\nof the server will be ignored.\nThis will enable the following flags: FLAGS_IGNORE_NAMESPACES, FLAGS_NIL,\nFLAGS_DEFAULT_TYPE_STRING\n\nUsing an arbitrary transport\n============================\naXMLRPC uses http with the java.net API. If you want to use another protocol or API, you can do:\n\n```java\n    boolean debug = false;\n    // or you may build it with flags and/or a custom datetime format\n    SerializerHandler serializerHandler = new SerializerHandler();\n    String payload = new Call(serializerHandler, \"add\", 5, 10).getXML(debug);\n\n    InputStream istream = sendPayloadWithMyTransport(payload); // use your implementation here\n\n    Integer i = (Integer) new ResponseParser.parse(serializerHandler, istream, debug);\n```\n\n\nLicense\n=======\n\nThe library is licensed under [MIT License] (http://www.opensource.org/licenses/mit-license.php).\nSee the LICENSE file for the license text. \n\nFor the uninformed reader: What does MIT mean?\n\n- You can copy this, modify it, distribute it, sell it, eat it.\n- You don't need to notice me about anything of the above.\n- If you make changes to it, it would be nice (but not obliged), if you would share it with me again.\n- Put the copyright notice and the LICENSE file in any copy you make.\n\nBugs?\n=====\n\nIf you find a bug or wish some enhancements for the library, please\nfill an issue here on github.\n\nBuild status\n============\nStatus: ![Status](https://travis-ci.org/gturri/aXMLRPC.svg?branch=master)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgturri%2FaXMLRPC","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgturri%2FaXMLRPC","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgturri%2FaXMLRPC/lists"}