{"id":33071305,"url":"https://github.com/qyvlik/HttpRequest","last_synced_at":"2025-11-19T03:02:20.937Z","repository":{"id":86331293,"uuid":"46064173","full_name":"qyvlik/HttpRequest","owner":"qyvlik","description":"HttpRequest such as XMLHttpRequest, but more powerful.","archived":false,"fork":false,"pushed_at":"2016-11-20T15:14:43.000Z","size":43,"stargazers_count":26,"open_issues_count":0,"forks_count":13,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-06-16T05:38:20.287Z","etag":null,"topics":["httprequest","qml"],"latest_commit_sha":null,"homepage":"","language":"C++","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/qyvlik.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}},"created_at":"2015-11-12T16:04:32.000Z","updated_at":"2022-04-25T08:47:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"7b7147c4-4b99-4bf8-b0eb-da1ebe55bb9c","html_url":"https://github.com/qyvlik/HttpRequest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/qyvlik/HttpRequest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qyvlik%2FHttpRequest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qyvlik%2FHttpRequest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qyvlik%2FHttpRequest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qyvlik%2FHttpRequest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qyvlik","download_url":"https://codeload.github.com/qyvlik/HttpRequest/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qyvlik%2FHttpRequest/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285175517,"owners_count":27127379,"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":"2025-11-19T02:00:05.673Z","response_time":65,"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":["httprequest","qml"],"created_at":"2025-11-14T09:00:30.482Z","updated_at":"2025-11-19T03:02:20.924Z","avatar_url":"https://github.com/qyvlik.png","language":"C++","funding_links":[],"categories":["Networking"],"sub_categories":[],"readme":"# HttpRequest\n\n`HttpRequest` use Qt **Network module** that register in qml env. Such as `XMLHttpRequest`.\n\n`HttpRequest` 使用 Qt 的**网络模块**编写。通过注册到 QML 中，就可以像使用 `XMLHttpRequest` 那样使用了。\n\n## Use in QML\n\n第一种使用方法是，直接实例化 `HttpRequest`。\n\n```\nHttpRequest { id: httpRequest }\nfunction doGet() {\n\n    httpRequest.clear();\n\n    httpRequest.finished.connect(function(){\n        httpRequest.finished.disconnect(arguments.callee);\n        console.log(httpRequest.responseText.length);\n        console.log(httpRequest.responseText);\n        // 如果 httpRequest.responseText 内容太长，console.log() 就不会再控制台打印\n    });\n\n    httpRequest.error.connect(function(){\n        httpRequest.error.disconnect(arguments.callee);\n        console.log(httpRequest.statusText);\n    });\n\n    httpRequest.timeout.connect(function(){\n        httpRequest.timeout.disconnect(arguments.callee);\n        console.log(\"time out\");\n    });\n\n    httpRequest.open(\"GET\", \"https://api.github.com/zen\");\n\n    httpRequest.setTimeout(3 * 1000);      // 3 s\n    httpRequest.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\n    httpRequest.send();\n}\n```\n\n\u003e **注意**：实例化的 `HttpRequest` 可以使用多次，但是每次重新使用前，务必使用 `clear()` 函数，这个函数会取消上一次还未完成的请求和请求设置。\n\n第二种类似于 `XMLHttpRequest`：\n\n```\nvar xhr = HttpRequestFactory.create();\n\nxhr.finished.connect(function(){\n    xhr.finished.disconnect(arguments.callee);\n    console.log(httpRequest.responseText.length);\n    console.log(httpRequest.responseText);\n    // 如果 httpRequest.responseText 内容太长，console.log() 就不会再控制台打印\n});\n\nxhr.error.connect(function(){\n    xhr.error.disconnect(arguments.callee);\n    console.log(xhr.statusText);\n});\n\nxhr.timeout.connect(function(){\n    xhr.timeout.disconnect(arguments.callee);\n    console.log(\"time out\");\n});\n\nhttpRequest.open(\"GET\", \"https://api.github.com/zen\");\n\nxhr.setTimeout(3 * 1000);      // 3 s\n\nxhr.send();\n```\n\n`HttpRequestFactory.create();` 构建的 `HttpRequest` 会在适当时候被自动回收。\n\n## Use In C++\n\n```\nHttpRequest* httpRequest = new HttpRequest();\n\nhttpRequest-\u003eclear();\n\nQObject::connect(httpRequest, \u0026HttpRequest::finished, [=](){\n    qDebug() \u003c\u003c httpRequest-\u003egetAllResponseHeader();\n    QJsonDocument dom = QJsonDocument::fromJson(httpRequest-\u003egetResponseText().toUtf8());\n    qDebug() \u003c\u003c dom.object();\n\n    httpRequest-\u003edeleteLater();\n});\n\nQObject::connect(httpRequest, \u0026HttpRequest::timeout, [=](){\n    qDebug() \u003c\u003c \" time out\";\n    httpRequest-\u003edeleteLater();\n});\n\nQObject::connect(httpRequest, \u0026HttpRequest::error, [=](){\n    qDebug() \u003c\u003c httpRequest-\u003egetStatus();\n    qDebug() \u003c\u003c httpRequest-\u003egetStatusText();\n    httpRequest-\u003edeleteLater();\n});\n\nQByteArray data(\"?limit=60\u0026offset=0\u0026s=%E7%88%B1\u0026total=true\u0026type=1\");\n\nhttpRequest-\u003esetRequestHeader(\"Referer\", \"http://music.163.com/search/\");\nhttpRequest-\u003esetRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\nhttpRequest-\u003eopen(\"POST\", QUrl(\"http://music.163.com/api/search/get\"));\n\nhttpRequest-\u003esetTimeout(30 * 1000);             // 30s\n\nhttpRequest-\u003esend(QString(data));\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqyvlik%2FHttpRequest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqyvlik%2FHttpRequest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqyvlik%2FHttpRequest/lists"}