iOS post上傳數(shù)據(jù)遇到的亂碼問題

經(jīng)過一天的蒸騰挪捕,我決定寫幾句話抒發(fā)一下我此時此時用了一天的時間才解決的小bug罚缕。

首先我自己覺的出現(xiàn)這個問題割粮,還是自己了解的太少剿干,其次是后臺人員的原因。

言歸正傳穆刻。我們的需求是上傳圖片同時添加介紹文字置尔。就這么一個簡單的需求。最開始使用AFN上傳氢伟,沒有后臺配合榜轿,放棄了,如果當時使用AFN可能也不會有這個問題朵锣,又差點跑題谬盐。我使用的是原生post上傳圖片和文字信息。android是使用的框架诚些,唉飞傀。。诬烹。砸烦。后臺使用的是DiskFileItemFactory這個框架。我也是第一次遇到這個問題很多不懂绞吁,據(jù)同學說這里需要和后臺一起協(xié)定post上傳的頭部Content-Type幢痘。我們后臺也不知道的,比我還小清新家破。post上傳代碼如下颜说,我自己也是參考網(wǎng)絡(luò)大牛寫的,

// 多張照片上傳

-?(void)upLoadImageWithTID:(NSString?*)user_id?andMsg:(NSString?*)msg?andURL:(NSString?*)urlStr?andImageArray:(NSArray?*)imageArray?{

//記錄Image的類型和data

NSString?*imageFormat?=?@"Content-Type:?image/png?\r\n";

NSMutableData?*imageArrayData?=?[NSMutableData?data];

NSMutableArray?*imageDataArr?=?[[NSMutableArray?alloc]init];

for?(int?i?=?0;?i?<?imageArray.count;?i?++)?{

NSData?*imageData?=?UIImagePNGRepresentation(imageArray[i]);

[imageArrayData?appendData:imageData];

[imageDataArr?addObject:imageData];

}

//?設(shè)置請求體

NSMutableData?*body?=?[NSMutableData?data];

/**文件參數(shù)**/

for?(int?i?=?0;?i?<?imageArray.count;?i?++)?{

[body?appendData:kLSEncode(@"--LS\r\n")];

//這里注明服務(wù)器接受圖片的參數(shù)(服務(wù)器指定參數(shù)名稱)及服務(wù)器上保存圖片的文件名

NSString?*disposition?=?[NSString?stringWithFormat:@"Content-Disposition:?form-data;?name=\"File%d\";?filename=\"image%d.png\"\r\n",?i+1,?i+1]?;

[body?appendData:kLSEncode(disposition)];

[body?appendData:kLSEncode(imageFormat)];

[body?appendData:kLSEncode(@"\r\n")];

NSData?*da?=?imageDataArr[i];

[body?appendData:da];

[body?appendData:kLSEncode(@"\r\n")];

}

/**普通參數(shù)**/

[body?appendData:kLSEncode(@"--LS\r\n")];

NSString?*dispositions?=?@"Content-Disposition:?form-data;?name=\"T_id\"\r\n";

[body?appendData:kLSEncode(dispositions)];

[body?appendData:kLSEncode(@"\r\n")];

[body?appendData:kLSEncode(user_id)];?//?user_id?的值

[body?appendData:kLSEncode(@"\r\n")];

[body?appendData:kLSEncode(@"--LS\r\n")];

NSString?*dispositionss?=?@"Content-Disposition:?form-data;?name=\"msg\"\r\n";

[body?appendData:kLSEncode(dispositionss)];

[body?appendData:kLSEncode(@"\r\n")];

[body?appendData:kLSEncode(msg)];?//?msg?的值

[body?appendData:kLSEncode(@"\r\n")];

/**參數(shù)結(jié)束**/

[body?appendData:kLSEncode(@"--LS--\r\n")];

//?請求地址

NSURL?*url?=?[NSURL?URLWithString:urlStr];

NSMutableURLRequest?*request?=?[NSMutableURLRequest?requestWithURL:url];

request.HTTPMethod?=?@"POST";

request.HTTPBody?=?body;

//設(shè)置請求長度

NSInteger?length?=?[body?length];

[request?setValue:[NSString?stringWithFormat:@"%ld",?(long)length]?forHTTPHeaderField:@"Content-Length"];

//?設(shè)置POST請求文件上傳

[request?setValue:@"multipart/form-data;?boundary=LS;"?forHTTPHeaderField:@"Content-Type"];

//????NSDictionary?*headers?=?@{@"Accept":?@"text/html",

//??????????????????????????????@"Content-Type":?@"multipart/form-data;?boundary=LS;charset=utf-8;",

//??????????????????????????????@"Cache-Control":?@"no-cache",

//??????????????????????????????@"Content-Length":[NSString?stringWithFormat:@"%ld",?(long)length]};

//????[request?setAllHTTPHeaderFields:headers];

[NSURLConnection?sendAsynchronousRequest:request?queue:[NSOperationQueue?mainQueue]?completionHandler:^(NSURLResponse?*?_Nullable?response,?NSData?*?_Nullable?data,?NSError?*?_Nullable?connectionError)?{

NSDictionary?*dic?=?[NSJSONSerialization?JSONObjectWithData:data?options:NSJSONReadingMutableLeaves?error:nil];

NSLog(@"-------========-------%@",?dic);

if?(!dic)?{

[self.hud?removeFromSuperview];

UIAlertView*?alert?=?[[UIAlertView?alloc]?initWithTitle:@"提示"?message:@"提交失敗."?delegate:nil?cancelButtonTitle:@"確定"?otherButtonTitles:nil,?nil];

[alert?show];

}

if?([dic[@"ResultCode"]?isEqual:@200])?{

[self.hud?removeFromSuperview];

UIAlertView*?alert?=?[[UIAlertView?alloc]?initWithTitle:@"提示"?message:@"提交成功."?delegate:nil?cancelButtonTitle:@"確定"?otherButtonTitles:nil,?nil];

[alert?show];

_isFirst?=?NO;

}?else?if([dic[@"ResultCode"]?isEqual:@500])?{

[self.hud?removeFromSuperview];

UIAlertView*?alert?=?[[UIAlertView?alloc]?initWithTitle:@"提示"?message:@"提交失敗."?delegate:nil?cancelButtonTitle:@"確定"?otherButtonTitles:nil,?nil];

[alert?show];

}

}];

}

后臺沒有寫Content-Type我這里也沒有汰聋, ?后臺說他的代碼是copy來的门粪。不知道改寫啥。真是的

亂碼就在傳字符串到后臺時是亂碼烹困。簡短點說吧還在上班玄妈,之前后臺得到我傳的字符串直接用的getString()方法,我改成。 new String(item.getString().getBytes("ios-8859-1"), "utf-8")措近。解決了。

此時我就懷疑了我傳的時候明明是utf-8編碼女淑,后臺為啥還要從ios-8859-1編碼格式轉(zhuǎn)到utf-8編碼瞭郑。難道iOS后臺傳送數(shù)據(jù)是ios-8859-1編碼的?鸭你?屈张?,希望大神們批評指正袱巨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阁谆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子愉老,更是在濱河造成了極大的恐慌场绿,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫉入,死亡現(xiàn)場離奇詭異焰盗,居然都是意外死亡,警方通過查閱死者的電腦和手機咒林,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門熬拒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人垫竞,你說我怎么就攤上這事澎粟。” “怎么了欢瞪?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵活烙,是天一觀的道長。 經(jīng)常有香客問我遣鼓,道長瓣颅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任譬正,我火速辦了婚禮宫补,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘曾我。我一直安慰自己粉怕,他們只是感情好,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布抒巢。 她就那樣靜靜地躺著贫贝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稚晚,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天崇堵,我揣著相機與錄音,去河邊找鬼客燕。 笑死鸳劳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的也搓。 我是一名探鬼主播赏廓,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼傍妒!你這毒婦竟也來了幔摸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤颤练,失蹤者是張志新(化名)和其女友劉穎既忆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗦玖,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡尿贫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了踏揣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庆亡。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖捞稿,靈堂內(nèi)的尸體忽然破棺而出又谋,到底是詐尸還是另有隱情,我是刑警寧澤娱局,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布彰亥,位于F島的核電站,受9級特大地震影響衰齐,放射性物質(zhì)發(fā)生泄漏任斋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一耻涛、第九天 我趴在偏房一處隱蔽的房頂上張望废酷。 院中可真熱鬧,春花似錦抹缕、人聲如沸澈蟆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趴俘。三九已至睹簇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寥闪,已是汗流浹背太惠。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疲憋,地道東北人凿渊。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像柜某,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子敛纲,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容