AFNetworking網絡請求與圖片上傳工具(POST)

AFNetworking網絡請求與圖片上傳工具(POST)

.h文件

#import <Foundation/Foundation.h>/** 成功Block  */
typedef void(^SuccessBlockType) (id responsData);
/** 失敗Block  */
typedef void(^FaileBlockType) (NSError *error);@interface NetDataEngine : NSObject//網絡請求
+ (void)postServerUrl:(NSString *)url parameters:(NSDictionary *)parameters success:(SuccessBlockType)success failure:(FaileBlockType)failure;//上傳圖片
+ (void)uploadWith:(UIImage *)upImg success:(SuccessBlockType)success failure:(FaileBlockType)failure;@end

?

.m文件

#import "NetDataEngine.h"
#import "AFNetworking.h"@implementation NetDataEngine+(AFHTTPSessionManager *)manager
{AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];// 聲明上傳的是json格式的參數,需要你和后臺約定好,不然會出現后臺無法獲取到你上傳的參數問題manager.requestSerializer = [AFHTTPRequestSerializer serializer]; // 上傳普通格式//    manager.requestSerializer = [AFJSONRequestSerializer serializer]; // 上傳JSON格式// 聲明獲取到的數據格式manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // AFN不會解析,數據是data,需要自己解析//    manager.responseSerializer = [AFJSONResponseSerializer serializer]; // AFN會JSON解析返回的數據// 個人建議還是自己解析的比較好,有時接口返回的數據不合格會報3840錯誤,大致是AFN無法解析返回來的數據// 超時時間[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];manager.requestSerializer.timeoutInterval = 10.f;//設置請求超時時間[manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];return manager;
}+ (void)postServerUrl:(NSString *)url parameters:(NSDictionary *)parameters success:(SuccessBlockType)success failure:(FaileBlockType)failure {AFHTTPSessionManager *manager = [self manager];[manager POST:url parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];//        JGLog(@"%@",dict);success(dict);} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//        JGLog(@"error:  %@",error);failure(error);}];
}+ (void)uploadWith:(UIImage *)upImg success:(SuccessBlockType)success failure:(FaileBlockType)failure {// 創建管理者對象AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];[manager POST:UP_PIC parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {// 獲取圖片數據NSData *fileData = UIImagePNGRepresentation(upImg);// 設置上傳圖片的名字NSDateFormatter *formatter = [[NSDateFormatter alloc] init];formatter.dateFormat = @"yyyyMMddHHmmss";NSString *str = [formatter stringFromDate:[NSDate date]];NSString *fileName = [NSString stringWithFormat:@"%@.png", str];[formData appendPartWithFileData:fileData name:@"image" fileName:fileName mimeType:@"image/png"];} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {//上傳成功后回調success(responseObject);} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//失敗回調
        failure(error);}];
}@end

?如果網絡請求超時,就在請求失敗中執行超時操作,如:取消指示器,提示用戶網絡存在問題等。

 if (error.code == -1001) {

? ? ? ?   [MBProgressHUD showError:@"網絡超時,請檢查網絡"];

? ? ? ? }

  //隱藏指示器

? ? ? ?[SVProgressHUD dismiss];

轉載于:https://www.cnblogs.com/GJ-ios/p/5772925.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457404.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457404.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457404.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

api商品分享源碼_SSM框架高并發和商品秒殺項目高并發秒殺API源碼免費分享

前言&#xff1a;一個整合SSM框架的高并發和商品秒殺項目,學習目前較流行的Java框架組合實現高并發秒殺API源碼獲取&#xff1a;關注頭條號轉發文章之后私信【秒殺】查看源碼獲取方式&#xff01;項目的來源項目的來源于國內IT公開課平臺,質量沒的說,很適合學習一些技術的基礎,…

Golang 定時任務 github/robfig/cron/v3 使用與源碼解析

Cron 源碼閱讀 robfig/cron/v3 是一個 Golang 的定時任務庫&#xff0c;支持 cron 表達式。Cron 的源碼真實教科書級別的存在&#xff08;可能是我菜 …&#xff09;,真的把低耦合高內聚體現地淋漓盡致&#xff0c;另外其中涉及的裝飾器模式&#xff0c;并發處理等都很值得學習…

修改 cmd 字體為 Consolas

windows 下的 cmd 窗口默認的字體有點難看&#xff0c;長時間使用操作 node.js 有點小疲勞&#xff0c;可以修改注冊表替換字體為 Consolas&#xff0c;并且可以全屏 cmd 窗口&#xff0c;代碼如下&#xff1a; Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Conso…

mac下安裝前端模板引擎Jinja2

在mac本上安裝Jinja2&#xff0c;搜索網上介紹的經驗&#xff0c;都是說使用easy_install或者pip安裝&#xff0c;比如 #sudo easy_install Jinja2 #sudo pip install Jinja2 也有直接使用 #easy_install Jinja2的&#xff0c;但是我使用上述命令安裝總是不成功&#xff0c;提示…

為什么要用python不用origin_Python告訴你為什么百度已死

Python3爬蟲百度一下&#xff0c;坑死你&#xff1f;一、寫在前面這個標題是借用的路人甲大佬的一篇文章的標題(百度一下&#xff0c;坑死你)&#xff0c;而且這次的爬蟲也是看了這篇文章后才寫出來的&#xff0c;感興趣的可以先看下這篇文章。前段時間有篇文章《搜索引擎百度已…

關于 HTTP 的一切(HTTP/1.1,HTTP/2,HTTP/3,HTTPS, CORS, 緩存 ,無狀態)

HTTP 為什么會出現 HTTP 協議&#xff0c;從 HTTP1.0 到 HTTP3 經歷了什么&#xff1f;HTTPS 又是怎么回事&#xff1f; HTTP 是一種用于獲取類似于 HTML 這樣的資源的 應用層通信協議&#xff0c; 他是萬維網的基礎&#xff0c;是一種 CS 架構的協議&#xff0c;通常來說&…

AS 2.0新功能 Instant Run

Instant Run上手作為一個Android開發者&#xff0c;很多的時候我們需要花大量的時間在bulid&#xff0c;運行到真機&#xff08;虛擬機&#xff09;上&#xff0c;對于ios上的Playground羨慕不已&#xff0c;這種情況將在Android Studio 2.0有了很大改善&#xff0c;使用instan…

爬蟲cookie過期_python instagram 爬蟲

葉湘倫&#xff1a;【文字篇】如何系統地自學 Python&#xff1f;?zhuanlan.zhihu.com直接介紹一下具體的步驟以及注意點&#xff1a;instagram 爬蟲注意點instagram 的首頁數據是 服務端渲染的&#xff0c;所以首頁出現的 11 或 12 條數據是以 html 中的一個 json 結構存在的…

php 無限循環

<?php header("Content-type:text/html;charsetutf-8"); $arr array( array(1, 0, 語文), array(2, 1, 數學), array(3, 0, 英文), array(4, 3, 美術), ); function xunhuan($pid 0) { global $arr; foreach ($arr as $value) { if ($value[1] $pid) { ech…

MySQL InnoDB 是如何存儲數據的

InnoDB 是怎么存儲數據的 本文是《MySQL 是怎樣運行的 —— 從根兒上理解 MySQL》讀書總結&#xff0c;強烈推薦這本書&#xff1b; CSDN 不能顯示 SVG&#xff0c;可能有圖片加載不出來&#xff0c;可以到 我的博客 上看。 數據目錄 眾所周之&#xff0c;MySQL 的數據是存儲在…

蔬菜大棚成本_蔬菜大棚種植成本和利潤究竟如何?種植戶有話說

大棚蔬菜種植&#xff0c;到底利潤高不高&#xff0c;就讓親身體驗過的人來說下自己的情況吧。農大老家山東也是大棚蔬菜種植比較早的地方&#xff0c;直到現在大棚種植蔬菜在各地都還是不少。大棚蔬菜種植&#xff0c;是有相應的補貼政策&#xff0c;在農業種植當中&#xff0…

WebSocket實戰之————GatewayWorker使用筆記例子

參考文檔&#xff1a;http://www.workerman.net/gatewaydoc/ 目錄結構 ├── Applications // 這里是所有開發者應用項目 │ └── YourApp // 其中一個項目目錄&#xff0c;目錄名可以自定義 │ ├── Events.php // 開發者只需要關注這個文件 │ ├── st…

[轉]關于凸優化的一些簡單概念

沒有系統學過數學優化&#xff0c;但是機器學習中又常用到這些工具和技巧&#xff0c;機器學習中最常見的優化當屬凸優化了&#xff0c;這些可以參考Ng的教學資料&#xff1a;http://cs229.stanford.edu/section/cs229-cvxopt.pdf&#xff0c;從中我們可以大致了解到一些凸優化…

Go 1.18.1 Beta 嘗鮮 泛型 FuzzTest workspace mode

Go 1.18.1 Beta 嘗鮮 昨天&#xff0c;go 終于發布了 1.18 的 beta 版本, 帶來了大家期待已久的泛型&#xff0c;抓緊時間康康能不能趕上熱乎的。 下載地址 根據社區昨天發的 Go 1.18 Beta 1 is available, with generics 這次版本更新主要帶來的新功能有&#xff1a; 泛型模…

centos7部署兩個mysql_一文掌握mysql實用工具--pt-online-schema-change、innotop部署

概述因為OSC和innotop這兩個需要的依賴包比較接近&#xff0c;所以這次就寫一起了&#xff0c;下面介紹下完整的部署教程&#xff0c;以下基于centos7操作系統。官網文檔&#xff1a;http://dev.mysql.com/doc/refman/5.7/en/innodb-create-index-overview.htmlOSC&#xff1a;…

python面試題目

問題一&#xff1a;以下的代碼的輸出將是什么? 說出你的答案并解釋。 1234567891011121314class Parent(object):x 1class Child1(Parent):passclass Child2(Parent):passprint Parent.x, Child1.x, Child2.xChild1.x 2print Parent.x, Child1.x, Child2.xParent.x 3print …

修改頁面后獲得flag_互動征集丨是時候為2021立flag了

2020馬上就要過去了今年的flag各位小伙伴實現了多少&#xff1f;翻出了生灰的flag擦擦說不定2021還能接著用哦2020年就要過去了還記得你在年初立下的那些Flag嗎&#xff1f;減肥“明天我就開始減肥&#xff01;”是大部分人在大部分時候都掛在嘴邊的一句話疫情宅家不僅沒減成還…

Python3.10 結構化模式匹配 PEP 634

Python3.10 結構化模式匹配 PEP 634 眼看 2021 馬上結束&#xff0c;python 發布了它的 3.10 版本&#xff0c;優化了錯誤消息&#xff0c;上下文管理器等內容&#xff0c;但更吸引我的還是結構化模式匹配。 眾所周之 switch 一直是 python 社區呼聲比較高的一個功能&#xff…

為ESXI 添加ISCSI存儲設備 Linux服務器系統

為ESXI 添加ISCSI存儲設備 Linux系統本文使用的LINUX 6系統上一塊硬盤制作的ISCSI存儲設備其IP地址為&#xff1a;192.168.26.218:在系統上直接輸入&#xff1a;yum -y install scsi-target-utils 命令 安裝 iscsi分區設置我們將SDD這塊硬盤的SDD1作為iscsi存儲設備編輯ISCSI配…

出棧順序 與 卡特蘭數(Catalan)的關系

一&#xff0c;問題描述 給定一個以字符串形式表示的入棧序列&#xff0c;請求出一共有多少種可能的出棧順序&#xff1f;如何輸出所有可能的出棧序列&#xff1f; 比如入棧序列為&#xff1a;1 2 3 &#xff0c;則出棧序列一共有五種&#xff0c;分別如下&#xff1a;1 2 3、…