[iOS]表单请求处理中文字符

前几天在项目里用了表单请求,然后记录了一下,链接附上 表单请求
今天接口增加了需求,接口中开始支持中文字符了,然后悲剧的事情发生了,由于后台采用的是UTF-8编码,而且表单请求比较奇葩,回来在翻AFN的方法列表的时候,找到了一个方法,可以解决这个问题,so,记录一下
同样还是利用AFN的MultipartFormData请求方法,只不过在拼接请求模块的时候给上内容编码和传输编码

    NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:kURL parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

        [formData appendPartWithHeaders:@{@"Content-Disposition" : @"form-data;name=\"hxid\"",
                                          @"Content-Type" : @"text/plain;charset=UTF-8",
                                          @"Content-Transfer-Encoding" : @"8bit"} body:[kHXID dataUsingEncoding:NSUTF8StringEncoding]];
        [formData appendPartWithHeaders:@{@"Content-Disposition" : @"form-data;name=\"companyName\"",
                                          @"Content-Type" : @"text/plain;charset=UTF-8",
                                          @"Content-Transfer-Encoding" : @"8bit"} body:[self.companyNameTextField.text dataUsingEncoding:NSUTF8StringEncoding]];
        [formData appendPartWithHeaders:@{@"Content-Disposition" : @"form-data;name=\"desc\"",
                                          @"Content-Type" : @"text/plain;charset=UTF-8",
                                          @"Content-Transfer-Encoding" : @"8bit"} body:[self.descTextField.text dataUsingEncoding:NSUTF8StringEncoding]];
    } error:nil];
    
    AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
    
    
    NSURLSessionUploadTask *uploadTask;
    uploadTask = [manager
                  uploadTaskWithStreamedRequest:request
                  progress:^(NSProgress * _Nonnull uploadProgress) {

                  }
                  completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
                      if (error) {
                          NSLog(@"Error: %@", error);
                      } else {
                          if ([[responseObject[@"code"] stringValue] isEqualToString:@"1"]) {
                              NSLog(@"创建公司成功");
                              [self searchCompanyID];
                          } else {
                              NSLog(@"创建公司失败%@", responseObject);
                          }
                      }
                  }];
    
    [uploadTask resume];

这样就能正常处理中文字符了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换...
    x360阅读 7,186评论 1 20
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,846评论 6 13
  • 作者 黄瑾 终于可以回老家了。从舅妈那里到老家,不到一小时就可以了。 车刚停在草地上,车门刚打开,...
    四七班编辑部阅读 1,807评论 4 7
  • 作为一个满满正能量的人,你累么?其实,拥有满满的正能量是幸福的,不仅仅因为给自己带来了快乐,更使周围的人觉得你永远...
    梦昕555阅读 1,209评论 0 1