Java给.net传递json参数的问题(自己记录一下,防止自己以后会忘了或者说是再犯同样的错误)

        我本来是在公司做第三方业务对接的,今天有幸跟一个.net的大佬进行数据对接,对接文档是我们的,本以为相当简单,但是却是出乎我的意料,话不多说,记录下来以防止自己后续犯同样的错误
首先说一下文档,我拿到的文档是一个Http请求调用第三方平台的一个接口,(在这之前我并不知道对方是用.net写的代码),
当时我自以为跟平时对接一样就只需要传给对方一个json格式的字符串就可以了,也没想太多,然后就开始编码,json.get....  json.put....然后http调用接口,然后联调,联调当中没问题的,是可以
第二天

客户方要求生产上测试一下app端的一个展示问题,给了一堆数据,想看一下app上显示的效果当我认认真真的填写完表单。。。开始测试的时候发现,过不去报错了(发生网络异常。。。(小声逼逼:我曹,我啥也没动呀))然后我将截图效果给我对接的同事看了一下。。。。。(此处省略)5000字
我就直接上代码吧

这是.net接受参数的方法

由于当时没注意他是读取的流,所以我一直传输的json字符串,导致问题一直没解决,后来灵机一动,改为了下方的这种传输方式

public static String postNet(String path,String params){
        BufferedReader in=null;
        java.net.HttpURLConnection conn=null;
        String msg = "";// 保存调用http服务后的响应信息
        try
        {
            //实例化url
            java.net.URL url = new java.net.URL(path);
            //根据url获取HttpURLConnection
            conn = (java.net.HttpURLConnection) url.openConnection();
            //设置请求的参数
            conn.setRequestMethod("POST");
            conn.setConnectTimeout(5 * 1000);// 设置连接超时时间为5秒
            conn.setReadTimeout(20 * 1000);// 设置读取超时时间为20秒
            conn.setDoOutput(true);    // 使用 URL 连接进行输出,则将 DoOutput标志设置为 true
            conn.setDoInput(true);
            conn.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
            //conn.setRequestProperty("Content-Encoding","gzip");
            conn.setRequestProperty("Content-Length", String.valueOf(params.length()));  //设置请求内容(长度)长度
            OutputStream outStream = conn.getOutputStream();   // 返回写入到此连接的输出流
            outStream.write(params.getBytes());    //将参数写入流中
            outStream.close();//关闭流

            if (conn.getResponseCode() == 200) {
                // HTTP服务端返回的编码是UTF-8,故必须设置为UTF-8,保持编码统一,否则会出现中文乱码
                in = new BufferedReader(new InputStreamReader((InputStream) conn.getInputStream(), "UTF-8"));
                msg = in.readLine();
            }
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return msg;
    }

然后解决了问题  如果遇见编码乱码的话使用适当的编码则可处理乱码问题


版权声明:本文为qq_42719318原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。