Http request传输图片和附属信息(old)

在iOS应用开发中,遇到通过HTTP请求同时传输图片和JSON格式的附属信息的问题。当图片以二进制存储在请求body中,JSON数据放入header时,服务器端解析JSON时因中文字符导致报错。为解决此问题,采用对汉字进行UTF编码,将中文转换为16进制字符串。Objective-C编码示例显示了这种转换过程,但其输出的16进制表示与Java不完全兼容。在Java端接收时,需要对 Oc编码后的字符串进行特定处理,将百分号转换为反斜杠x,且保留未编码的拉丁字符。这样,可以正确地解码并还原混合传输的数据。
摘要由CSDN通过智能技术生成

       在MeToo的研发过程中,部分模块需要使用http请求向服务器同时传输图片和一些附属信息。由于图片使用NSDATA格式传输,附属信息使用JSON格式传输,而消息的body只能支持其中一种格式,因此在只要传输JSON信息的时候,使用UTF8编码传输;在需要同时传输图片和附属信息时,将图片以二进制格式放在body里,附属信息的JSON放在header里,如下所示:

[[SVHTTPClient sharedClientWithIdentifier:@"upload"] setValue:_delegate.userID forHTTPHeaderField:@"userid"];
。。。。。。
[[SVHTTPClient sharedClientWithIdentifier:@"upload"]POST:POSTVOTE_SERVLET parameters:[NSDictionary dictionaryWithObjectsAndKeys:
                 imageData, @"image",
                 nil]
            completion:^(id response, NSHTTPURLResponse *urlResponse, NSError *error) { …… }];

       但这里有个问题,在httpheader中设置的编码格式只对body起作用,header本身只支持ascii的文本,如果将中文放在header中(即使用JSON包装也一样),传到服务器端后服务器解析不出来,从而报JSON格式错误。

       解决方法是,对汉字进行UTF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值