{"id":15160670,"url":"https://github.com/chasel-shao/csnetty","last_synced_at":"2025-10-24T18:32:07.164Z","repository":{"id":56905175,"uuid":"96166662","full_name":"Chasel-Shao/CSNetty","owner":"Chasel-Shao","description":"CSNetty is a powerful and elegant HTTP client framework for iOS/OSX. It besed on NSURLSession, and the adopting of chaining syntax make it easy to use. ","archived":false,"fork":false,"pushed_at":"2017-07-05T05:30:55.000Z","size":52,"stargazers_count":19,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-10T10:20:58.419Z","etag":null,"topics":["batch-job","http","objective-c"],"latest_commit_sha":null,"homepage":"","language":"Objective-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/Chasel-Shao.png","metadata":{"files":{"readme":"README-CN.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}},"created_at":"2017-07-04T02:19:46.000Z","updated_at":"2023-03-29T02:06:24.000Z","dependencies_parsed_at":"2022-08-20T19:20:29.341Z","dependency_job_id":null,"html_url":"https://github.com/Chasel-Shao/CSNetty","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chasel-Shao%2FCSNetty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chasel-Shao%2FCSNetty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chasel-Shao%2FCSNetty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chasel-Shao%2FCSNetty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Chasel-Shao","download_url":"https://codeload.github.com/Chasel-Shao/CSNetty/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219868059,"owners_count":16555878,"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":["batch-job","http","objective-c"],"created_at":"2024-09-26T23:05:13.222Z","updated_at":"2025-10-24T18:32:05.571Z","avatar_url":"https://github.com/Chasel-Shao.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"CSNetty\n==============\n\n[![License MIT](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://raw.githubusercontent.com/Chasel-Shao/CSNetty/master/LICENSE)\u0026nbsp;\n[![CocoaPods](http://img.shields.io/cocoapods/v/CSNetty.svg?style=flat)](http://cocoapods.org/pods/CSNetty)\u0026nbsp;\n\n[:book: English Documentation](README.md) | :book: 中文文档\n\nCSNetty 是一个优雅强大的网络框架，基于NSURLSession实现，并使用链式语法提供了简洁的调用方式。\n\n\n\n特性\n==============\n\n- 简洁的链式语法\n- 异步的HTTP请求，使用block回调\n- 支持不同Content-Type设置不同的的序列化方法\n- 提供面向切面的方法，能在不同的生命周期过程中回调方法\n- 具有HTTP缓存机制，并设置不同的缓存方式和缓存时间\n- 直接发起多个请求，可以异步回调结果或者同步一次返回\n- 支持监听上传和下载的进度，也包括监听多个请求的上传下载总进度\n\n\n使用方法\n==============\n\n### 简单的GET和POST使用方法\n```objc\n// 0. 设置URL路径\nNSURL *url = [NSURL URLWithString:@\"http://github.com\"];\n\n// 1. 使用GET方法\nCSNettyManager\n.GET(url)\n.send([CSNettyCallback success:^(CSNettyResult *response) {\n\t// success\n} failure:^(CSNettyResult *response) {\n\t// failure\n}]);\n\n// 2. 使用POST方法\nCSNettyManager\n.POST(url)\n.send([CSNettyCallback success:^(CSNettyResult *response) {\n\t// success\n} failure:^(CSNettyResult *response) {\n\t// failure\n}]);\n\n// 3. 参数的传递\nNSDictionary *params = @{@\"account\":@\"Ares\",@\"passowrd\":@\"1234567\"};\nCSNettyManager\n.POST(url)\n.addParam(params)\n.send([CSNettyCallback success:^(CSNettyResult *response) {\n\t// success\n} failure:^(CSNettyResult *response) {\n\t// failure\n}]);\n\n// 4. 设置HTTP头部信息\nNSDictionary *headerDict = @{@\"AESTOKEN\":@\"......\",@\"Content-Type\":@\"text/plain;charset=UTF-8\"};\nCSNettyManager\n.POST(url)\n.addParam(params)\n.addHeader(headerDict)\n.send([CSNettyCallback success:^(CSNettyResult *response) {\n\t// success\n} failure:^(CSNettyResult *response) {\n\t// failure\n}]);\n\n```\n### 设置缓存机制\n```objc\n// 1. 默认不使用缓存（CSNettyCachePolicyNone）\n.setCachePolicy(CSNettyCachePolicyNone)\n\n// 2. 使用硬盘持久存储缓存\n.setCachePolicy(CSNettyCachePolicyDisk)\n\n// 3. 使用内存临时存储缓存\n.setCachePolicy(CSNettyCachePolicyMemory)\n\n// 4. 设置缓存有效时间\n.setCacheExpiredTime(7 * 24 * 3600)\n\n// 5. 读取缓存后的回调\n.send([CSNettyCallback success:^(CSNettyResult *response) {\n\t// success\n} cache:^(CSNettyResult *response) {\n\t// cache \n} failure:^(CSNettyResult *response) {\n\t// failure\n}]);\n\n// 6. 或者手动初始化CSNettyCallback\nCSNettyCallback *callback = [[CSNettyCallback alloc] init];\ncallback.cacheBlock = ^(CSNettyResult *result){\n\t// handle code\n};\n// 然后使用send方法\n.send(callback)\n\n```\n### 设置自定义序列化方法\n```objc\n// 先设置Content-Type对应的回调方法\nCSNettyResponseSerialization *responseSerialization = [CSNettyResponseSerialization defaultResponseSerialize];\n[responseSerialization addContentType:[NSSet setWithObject:@\"text/html\"] withHandleBlock:^id(NSData *data) {\n    // custom serialization code\n    return responseData;\n}];\n// 再设置回调对象\n.setResponseSerialzation(responseSerialization)\n\n```\n### 设置请求过程中的拦截方法\n```objc\n// 设置拦截对象和方法\nCSNettyAspect *dispose = [[CSNettyAspect alloc] init];\ndispose.beforeResponseWithBlock = ^id(id data) {\n   // custom handle code\n   return handledData;\n};\n\n// 再设置拦截对象\n.setAspectDispose(dispose)\n\n```\n### 监听上传下载的进度\n```objc\n// 1. 使用CSNettyCallback的工厂方法，直接构建回调对象\n[CSNettyCallback success:^(CSNettyResult *response) {\n\t// success\n} uploadProgress:^(NSProgress *progress) {\n\t// upload progress\n} downloadProgressprogress:^(NSProgress *progress) {\n\t// download progress\n} failure:^(CSNettyResult *response) {\n    // failure \n}];\n\n// 2. 或者手动设置回调的函数\nCSNettyCallback *callback = [[CSNettyCallback alloc] init];\ncallback.uploadProgressBlock = ^(NSProgress *progress) {\n     // upload progress  \n};\ncallback.downloadProgressBlock = ^(NSProgress *progress) {\n\t// download progress    \n};\n\n// 最后使用send方法\n.send(callback)\n\n```\n### 设置多个请求\n```objc\n// 第一个请求\nCSNettyManager\n.POST(url)\n.addHeader(headerDict)\n.setResponseSerialzation(responseSerialization)\n.setCachePolicy(CSNettyCachePolicyDisk)\n.setCacheExpiredTime(7 * 24 * 3600)\n// 第二个请求\n.get(url)\n.addParam(params)\n.setCachePolicy(CSNettyCachePolicyMemory)\n.setTimeout(30)\n// 第三个请求\n.get(url)\n// 设置结果回调的形式，设置为 CSNettyMultiResponseSync 所有请求最后回调一次\n// 若设置为CSNettyMultiResponseAsyn，每个请求都产生一次回调\n.setMultiRequestPolicy(CSNettyMultiResponseSync)\n// 结果回调\n.send([CSNettyCallback success:^(CSNettyResult *response) {\n\t// success\n} cache:^(CSNettyResult *response) {\n\t// cache\n} failure:^(CSNettyResult *response) {\n\t// failure\n}]);\n```\n安装\n==============\n### CocoaPods\n\n1. 在 Podfile 中添加 `pod 'CSNetty'`\n2. 执行 `pod install` 或 `pod update`\n3. 导入 \\\u003cCSNetty/CSNetty.h\\\u003e\n\n### 手动集成\n1. 下载 CSNetty 源文件\n2. 然后导入到项目文件中，并引用 CSNetty.h 头文件\n\n系统要求\n==============\n该项目最低支持 `iOS 7.0`\n\n\n作者\n==============\n- [Chasel-Shao](https://github.com/Chasel-Shao) 753080265@qq.com\n\n\n许可证\n==============\nCSNetty 使用 MIT 许可证，详情见 LICENSE 文件。\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchasel-shao%2Fcsnetty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchasel-shao%2Fcsnetty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchasel-shao%2Fcsnetty/lists"}