`
wandejun1012
  • 浏览: 2729965 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

json入参的接口乱码问题解决

    博客分类:
  • java
 
阅读更多

 

需求背景:由于一些接口并没有采用常规的form形式,而是用一个json作为入参,形如{"userName":"zhangsan","password":"123456"}.

这种情况下用restTemplate也行,用httpClient也行,但是restTempalte和httpClient都可能有乱码问题。我这里用最原生的UrlConnection来解决,加上一些头部信息,即可解决乱码,很爽。

 

关键代码:

 

public static void post(String url, String param ) throws Exception{
        String charset = "UTF-8"; 
        URLConnection connection = new URL(url).openConnection();
        connection.setDoOutput(true);  Triggers POST.
        connection.setRequestProperty("Accept-Charset", charset);
        connection.setRequestProperty("Content-Type", "application/json;charset=" + charset);

        try (OutputStream output = connection.getOutputStream()) {
          output.write(param.getBytes(charset));
        }

        InputStream response = connection.getInputStream();
        String result= InputStreamTOString(response, "UTF-8");
        System.out.println("result^_^"+result);
      }

 

 

final static int BUFFER_SIZE = 4096;  
       
     /  

  • 将InputStream转换成某种字符编码的String  
  • @param in  
  • @param encoding  
  • @return  
  • @throws Exception  
             */  
                 public static String InputStreamTOString(InputStream in,String encoding) throws Exception{  
                 
                ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
                byte[] data = new byte[BUFFER_SIZE];  
                int count = -1;  
                while((count = in.read(data,0,BUFFER_SIZE)) != -1)  
                    outStream.write(data, 0, count);  
                 
                data = null;  
                return new String(outStream.toByteArray(),encoding);  
            }  
 
 

具体代码我已经封装在V3架构里面的HttpClientUtil的postWithJson方法中,为了保持统一,本方法强制用UTF-8编码。

只要接受3个参数,具体看源码即可。

 

refurl:http://stackoverflow.com/questions/7181534/http-post-using-json-in-java

 

分享到:
评论

相关推荐

    C#接收json数据后中文乱码解决方法

    C#接收Json格式数据,中文出现乱码解决方法

    读写json中文ASCII乱码问题的解决方法

    总之,解决JSON中文乱码问题的关键在于确保在读写文件以及转化JSON字符串时都正确地指定和处理UTF-8编码。在Python 2.x中,使用`codecs.open`并在`json.dumps`中设置`ensure_ascii=False`;在Python 3.x中,直接使用...

    Java Http请求传json数据乱码问题的解决

    以下将详细介绍在Java中如何解决HTTP请求传输JSON数据出现乱码的问题。 首先,我们了解乱码出现的原因。HTTP协议是基于ASCII的,而在HTTP协议中传输中文字符时,如果没有明确指定字符编码,服务器和浏览器可能会...

    json 中文乱码解决方案

    本文将详细介绍如何解决JSON中的中文乱码问题,并提供几种简单实用的方法来帮助开发者避免这类问题的发生。 #### 一、问题背景与原因分析 在Web开发中,前后端之间传递的数据格式往往采用JSON(JavaScript Object ...

    网页获取JSON中文返回乱码解决方案(java + js)

    总结来说,解决JSON中文乱码问题的关键在于确保JSON数据从生成到传输再到解析的整个过程中,始终使用UTF-8编码。在Java后端,要使用UTF-8编码生成JSON字符串,并在HTTP响应中设置正确的Content-Type;在JavaScript...

    Android读取本地json文件的方法(解决显示乱码问题)

    以下将详细讲解如何在Android中读取本地JSON文件,并解决可能出现的显示乱码问题。 1. **读取本地JSON文件(但显示汉字乱码)** 这个问题通常发生在读取文件时没有正确指定字符编码。在Android中,我们通常使用`...

    网页获取JSON中文返回乱码解决方案(java)

    懒得考虑各种字符编码问题了,用了一个比较暴力的方法,不只中文,所有双字节文字都可以避免乱码问题。

    Spring boot如何配置请求的入参和出参json数据格式

    首先,针对请求入参的JSON数据格式配置,特别是日期类型的字段,我们需要创建一个自定义的日期编辑器(PropertyEditor)。例如,`DateEditor` 类继承自 `PropertyEditorSupport`,用于将JSON中的日期字符串转换为...

    jsoncpp 写入乱码解决版本

    解决JSONCPP写入乱码问题的关键步骤包括以下几个方面: 1. **确保文件打开模式正确**:当你使用`std::ofstream`打开文件时,应明确指定以二进制模式和UTF-8编码进行写入,例如: ```cpp std::ofstream file(...

    soapUI输入中文显示为乱码,响应报文中文乱码问题解决方法.txt

    soapUI输入中文显示为乱码 响应报文中文乱码问题解决方法

    python json.dumps中文乱码问题解决

    json.dumps(var,ensure_ascii=False)并不能解决中文乱码的问题 json.dumps在不同版本的Python下会有不同的表现, 注意下面提到的中文乱码问题在Python3版本中不存在。 注:下面的代码再python 2.7版本下测试通过 # -...

    PHP json_encode中文乱码问题的解决办法

    本篇知识分享将详细解释在PHP中遇到json_encode中文乱码问题时的解决办法。 ### 1. JSON编码原理简述 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于文本,独立于语言,具有良好的可读性和互...

    以\"对象\"方式接收json数据.(解决乱码问题)

    本文将深入探讨如何以“对象”方式接收JSON数据,并解决可能出现的乱码问题。 首先,让我们理解JSON数据的结构。JSON数据由键值对组成,其中键是字符串,值可以是字符串、数字、布尔值、数组、null或另一个JSON对象...

    Ajax中文乱码问题解决方案

    本文将深入探讨Ajax中文乱码问题的成因,并提供一系列解决方案。 **一、问题原因** 1. **编码格式不一致**:服务器与客户端(浏览器)之间使用的字符编码格式不同,例如服务器使用GBK编码,而浏览器使用UTF-8编码...

    postjson_windows接口测试工具

    【标题】"Postjson_windows接口测试工具"是一个专为Windows平台设计的应用程序,它使得开发者和测试人员能够方便地对RESTful API接口进行测试。在软件开发过程中,接口测试是确保不同系统组件之间数据交换正确性的...

    JSON Tools测试接口数据

    JSON Tools 是一个强大的工具集,专门用于处理与JSON(JavaScript Object Notation)相关的任务,尤其在测试接口数据方面。JSON是一种轻量级的数据交换格式,因其简洁和易于阅读的特性,广泛应用于网络服务和应用...

    jsoncpp动态库(win32 relese版,解决toStyledString中文乱码问题)

    总结起来,JSONCPP是一个用于C++的JSON处理库,而提供的win32 relese版是针对32位Windows系统优化的版本,解决了在使用`toStyledString`函数时可能出现的中文乱码问题。解决这类问题通常涉及编码设置、字符集转换...

    解决Pandas to_json()中文乱码,转化为json数组的问题

    在使用Python的Pandas库处理数据之后,我们常常需要将DataFrame对象导出为JSON...通过上述的步骤和知识点,你可以有效地解决Pandas to_json()方法在处理中文数据时出现的乱码问题,并将数据以正确的JSON格式保存下来。

Global site tag (gtag.js) - Google Analytics