91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解決ASIHTTP setFile上傳文件后中文亂碼問題

發布時間:2020-07-19 23:51:15 來源:網絡 閱讀:976 作者:yvbang 欄目:移動開發


這問題困擾我好長時間,不上傳文件就不是亂碼,傳文件就亂碼,并且Android好使;
最后聯合中間件后臺/Android客戶端/IOS客戶端,共同上傳比較,
最后在后臺捕捉時發現,Android的提交輸出格式為:


--PfyXAYcEcmd3GqueWEk6hXUWXfm-KrG4XNEQContent-Disposition: form-data; name="companyName"Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit


公司名


IOS的提交輸出格式為:
--0xKhTmLbOuNdArY-C14CFE75-F1D5-4E68-BFDB-93957E2DDCEFContent-Disposition: form-data; name="companyName"


公司名


發現post的Value都是中文的,都沒有經過編碼, 不過Android的設置了Content-Type, 而IOS的ASIHttpRequest中,上傳文件時忽略了Content-Type的頭注入,導致后臺不識別編碼模式, 不過應該是后臺特意對Android做過些處理, (之前Android傳文件是亂碼).現在問題解決了!!

下面是代碼修改處:


在ASIFormDataRequest 中的 - (void)buildMultipartFormDataPostBody 方法修改

高亮處為修改代碼:



- (void)buildMultipartFormDataPostBody { #if DEBUG_FORM_DATA_REQUEST [self addToDebugBody:@"\r\n==== Building a multipart/form-data body ====\r\n"]; #endif NSString *charset = (NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding([self stringEncoding])); // We don't bother to check if post data contains the boundary, since it's pretty unlikely that it does. CFUUIDRef uuid = CFUUIDCreate(nil); NSString *uuidString = [(NSString*)CFUUIDCreateString(nil, uuid) autorelease]; CFRelease(uuid); NSString *stringBoundary = [NSString stringWithFormat:@"0xKhTmLbOuNdArY-%@",uuidString]; [self addRequestHeader:@"Content-Type" value:[NSString stringWithFormat:@"multipart/form-data; charset=%@; boundary=%@", charset, stringBoundary]]; [self appendPostString:[NSString stringWithFormat:@"--%@\r\n",stringBoundary]]; // Adds post data NSString *endItemBoundary = [NSString stringWithFormat:@"\r\n--%@\r\n",stringBoundary]; NSUInteger i=0; for (NSDictionary *val in [self postData]) { [self appendPostString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\nContent-Type:text/plain; charset=UTF-8\r\n\r\n",[val objectForKey:@"key"]]]; [self appendPostString:[val objectForKey:@"value"]]; i++; if (i != [[self postData] count] || [[self fileData] count] > 0) { //Only add the boundary if this is not the last item in the post body [self appendPostString:endItemBoundary]; } } // Adds files to upload i=0; for (NSDictionary *val in [self fileData]) { [self appendPostString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", [val objectForKey:@"key"], [val objectForKey:@"fileName"]]]; [self appendPostString:[NSString stringWithFormat:@"Content-Type: %@\r\n\r\n", [val objectForKey:@"contentType"]]]; id data = [val objectForKey:@"data"]; if ([data isKindOfClass:[NSString class]]) { [self appendPostDataFromFile:data]; } else { [self appendPostData:data]; } i++; // Only add the boundary if this is not the last item in the post body if (i != [[self fileData] count]) { [self appendPostString:endItemBoundary]; } } [self appendPostString:[NSString stringWithFormat:@"\r\n--%@--\r\n",stringBoundary]]; #if DEBUG_FORM_DATA_REQUEST [self addToDebugBody:@"==== End of multipart/form-data body ====\r\n"]; #endif }





**** 51cto  .富文本代碼語言竟然沒有ObjC的????   這也太low了吧?  .算了 湊合看吧!!!!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳山县| 名山县| 荔波县| 南安市| 墨脱县| 长泰县| 井研县| 宝兴县| 永康市| 封丘县| 曲靖市| 克什克腾旗| 班玛县| 门头沟区| 博爱县| 曲麻莱县| 苏尼特右旗| 扎兰屯市| 崇仁县| 怀化市| 荥经县| 开远市| 拉萨市| 阜康市| 龙陵县| 大埔县| 丹阳市| 崇礼县| 曲麻莱县| 安龙县| 黄梅县| 新绛县| 革吉县| 怀化市| 哈密市| 永顺县| 星座| 彭泽县| 玉树县| 灌南县| 广东省|