调用接口返回中文乱码_java请求接口返回乱码

调用接口返回中文乱码_java请求接口返回乱码最近调用Webservice接口时,遇到接收乱码的问题最开始用soapUI测试看XML结果是正常的,返回结果大概是这样(只截取了json部分结果){“state”:0,”message”:”流程启动成功”,”seqno”:”202005020009″}后来在JAVA后台使用HttpURLConnection调用(全部代码在后面),发现返回来的中文部分全部乱码,如下{“state…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最近调用Webservice接口时,遇到接收乱码的问题

最开始用soapUI测试看XML结果是正常的,返回结果大概是这样(只截取了json部分结果)

{"state":0,"message":"流程启动成功","seqno":"202005020009"}

后来在JAVA后台使用HttpURLConnection调用(全部代码在后面),发现返回来的中文部分全部乱码,如下

{"state":0,"message":"娴佺▼鍚姩鎴愬姛","seqno":"202005020009"}

在测试JAVA文件跑JAVA Application中返回的是正常中文,测试JAVA文件里代码与Tomcat上跑的代码是完全一样的,于是打断点查找原因,发现在下面这一步

InputStreamReader isr = new InputStreamReader(is)

isr里的结果就是乱码,上网查InputStreamReader编码格式,找到了这篇文章:InputStreamReader 出现乱码问题如何解决?

大概找到原因,于是试着把编码主动设置为UTF-8,像下面这样,问题解决。若大家解决不了,可尝试其他几种编码方式。

InputStreamReader isr = new InputStreamReader(is, "UTF-8");  

贴上整个调用接口的代码,如下,也是一般的使用HttpURLConnection调用Webservice接口的代码

public String callInterface(String URL, String requestMethod, String contentType, String SOAPAction, String soapXml) throws IOException{
		String result = "";
		//第一步:创建服务地址
		URL url = new URL(URL);
		//第二步:打开一个通向服务地址的连接  
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();  
        //第三步:设置参数  
        //3.1发送方式设置:POST必须大写  
        connection.setRequestMethod(requestMethod);  
        //3.2设置数据格式:content-type  SOAPAction
        connection.setRequestProperty("content-type", contentType);
        connection.setRequestProperty("SOAPAction", SOAPAction);
        //3.3设置输入输出,因为默认新创建的connection没有读写权限,  
        connection.setDoInput(true);  
        connection.setDoOutput(true);  
        //第四步:组织SOAP数据,发送请求  
        System.out.println("requestXml:"+soapXml);
        connection.connect();//可能非必须
        //将信息以流的方式发送出去
        OutputStream os = connection.getOutputStream();  
        os.write(soapXml.getBytes("UTF-8"));  
        os.flush();
        os.close();
        //第五步:接收服务端响应,打印  
        int responseCode = connection.getResponseCode();  
        if(200 == responseCode){//表示服务端响应成功  
        	//获取当前连接请求返回的数据流
            InputStream is = connection.getInputStream();  
            InputStreamReader isr = new InputStreamReader(is, "UTF-8");  
            BufferedReader br = new BufferedReader(isr);  
              
            StringBuilder sb = new StringBuilder();  
            String temp = null;  
            while(null != (temp = br.readLine())){  
                sb.append(temp);  
            }  
            /**
             * 打印结果
             */
            //response = sb.toString();
            result = sb.toString();
            System.out.println("返回XML:"+ sb.toString());  
            is.close();  
            isr.close();  
            br.close(); 
        }  
        os.close();
		return result;
	}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184395.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 向量的点乘和叉乘[通俗易懂]

    向量的点乘和叉乘[通俗易懂]【点乘】在数学中,数量积(dotproduct;scalarproduct,也称为点积)是接受在实数R上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积。代数定义代数定

    2022年8月6日
    2
  • SQLServer2008安装教程[通俗易懂]

    SQLServer2008安装教程[通俗易懂]因为对接老系统的数据,上面使用的SQLServer2008,所以本机也需要SQLServer2008作对接。首当其冲的就是SQLServer2008的安装。1.下载sqlServer2008的安装包2.在安装包中点击setup.exe2.选择安装,再选择全新安装3.安装规则检测,等待通过后确认4.产品密钥会自动填充直接下一步(不截图说明)5.勾选“我接受”直接下一步(不截图说明)6.对于程序支持文件,点击安装;然后安装通过,点击下一步7.设置角色,选择“功..

    2022年6月23日
    41
  • Beyond Compare 4试用期已过

    BeyondCompare很好用,但是只有一段时间的试用时间,当试用期过了之后就提示不能试用了怎么办呢?我在网上找到了两个方法:1.直接用注册码(来自:https://blog.csdn.n

    2022年2月16日
    79
  • 转:JRTPLIB

    JRTPLIB AuthorJoriLiesenborgsDevelopedatthethe ExpertiseCentreforDigitalMedia(EDM),aresearchinstituteofthe HasseltUniversityIntroductionThisdocumentdescribesJRTPLIB,ano…

    2022年4月7日
    57
  • 单例模式 java 三种写法_双重锁的单例模式

    单例模式 java 三种写法_双重锁的单例模式单例模式有多种写法,都有各自的优缺点,最常见的优缺点就是【懒汉和饿汉】的比较,以及是否线程安全懒汉模式,节约内存,只有使用到时才创建单例对象,可能会有线程安全问题饿汉模式,浪费内存,但可以由JVM类加载器去保证线程安全一、饿汉模式publicclassSingleton1{/***饿汉式提前创建好单例对象(在类被主动使用时便会触发静态变量的初始化)*/privatefinalstaticSingleton1INSTANCE=new

    2022年8月11日
    4
  • linux命令行查看ip地址_ip a命令

    linux命令行查看ip地址_ip a命令查看ip命令这个命令使用于很多版本ipaddr

    2022年7月27日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号