Genexus使用HttpClient发送带换行JSON的UTF-8编码设置问题
解决方案
- 第一步:修改Content-Type请求头,明确指定编码格式为UTF-8,将原来的头配置替换为:
&HttpClient.AddHeader('Content-Type','application/json; charset=utf-8')
- 第二步:不要直接使用
AddString方法传入字符串,Genexus的AddString默认会使用当前系统的本地编码传输内容,改为先将请求体转为UTF-8二进制流后再提交:
把原来的
&HttpClient.AddString(&body)
替换为
&HttpClient.AddBinary(&body.ToUTF8())
额外优化建议
你当前是手动拼接JSON字符串,存在转义风险:如果CSV内容中出现双引号、反斜杠等特殊字符,会导致整个JSON结构异常。推荐使用Genexus内置的JSONObject类来构造请求体,自动处理转义和编码问题,示例如下:
&JsonObject = new() &JsonObject.AddProperty("tipoEmision", "normal ") &JsonObject.AddProperty("Csv", &csv) &body = &JsonObject.ToString()
报错原因说明
你收到的报错中提到的[F3]字节,是字符ó(出现在你Factura electrónica字段中)在ISO-8859-1编码下的值,并非UTF-8编码结果,接口侧用UTF-8解码时无法识别该字节,所以抛出转换错误。
内容的提问来源于stack exchange,提问作者ferlrp
相关产品推荐
相关产品推荐

