解决http 请求接受参数乱码问题

10 篇文章 0 订阅
7 篇文章 0 订阅

 解决http 请求接受参数乱码问题

StringBuilder requestXmlBuilder = new StringBuilder();
                requestXmlBuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
                requestXmlBuilder.append("<orders>");
                 
                //订单信息
                requestXmlBuilder.append("<order>");
                requestXmlBuilder.append("<order_serial_no>113111119</order_serial_no>");
                requestXmlBuilder.append("<khddh>113111119</khddh>");
                 
                //发货方信息
                requestXmlBuilder.append("<sender>");
                requestXmlBuilder.append("<name>bb</name>");
                requestXmlBuilder.append("<company>cc</company>");
                requestXmlBuilder.append("<city>nn</city>");
                requestXmlBuilder.append("<address>yy</address>");
                requestXmlBuilder.append("<postcode>ii</postcode>");
                requestXmlBuilder.append("<phone>13929449322</phone>");
                requestXmlBuilder.append("<mobile>13929449322</mobile>");
                requestXmlBuilder.append("<branch></branch>");
                requestXmlBuilder.append("</sender>");
                 
                //收货方信息
                requestXmlBuilder.append("<receiver>");
                requestXmlBuilder.append("<name>kk</name>");
                requestXmlBuilder.append("<city>上海市,上海市,闵行区</city>");
                requestXmlBuilder.append("<address>上海市,上海市,闵行区七莘路3588号</address>");
                requestXmlBuilder.append("<postcode>221435</postcode>");
                requestXmlBuilder.append("<phone>021-8592369</phone>");
                requestXmlBuilder.append("<mobile>13929449322</mobile>");
                requestXmlBuilder.append("<branch></branch>");   
                requestXmlBuilder.append("</receiver>");
                 
                //商品信息
                        requestXmlBuilder.append("<weight>20</weight>");
                        requestXmlBuilder.append("<items>");
                        requestXmlBuilder.append("<item>");   
                         
                        requestXmlBuilder.append("<name>kk</name>");
                        requestXmlBuilder.append("<number>2</number>");
                        requestXmlBuilder.append("<remark>lll</remark>");
                         
                        requestXmlBuilder.append("</item>");
                        requestXmlBuilder.append("</items>");
                        requestXmlBuilder.append("<remark>i</remark>");   
                         
                requestXmlBuilder.append("</order>");
                requestXmlBuilder.append("</orders>");
                String line="";
                try {
                    String firstResponse = "";
                    /*
                     * 制造和发送数据
                     */                       
                        //打开连接
                        URL url = new URL(apiUrl);
                        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                        connection.setDoOutput(true);
                        connection.setRequestMethod("POST");
                        connection.setRequestProperty("Charset", "UTF-8");
                        OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
 
                        //记录发出报文日志
                         
                        String base64Data=new String(new Base64().encode(requestXmlBuilder.toString().getBytes()));   
                         
 
                        //签名内容
                        String validation=base64Data+parternId+passWord;
                        validation=DigestUtils.md5Hex(validation);
                        //encode编码
                         parternId=URLEncoder.encode(parternId, "UTF-8");
                         base64Data=URLEncoder.encode(base64Data, "UTF-8");
                         validation=URLEncoder.encode(validation, "UTF-8");
                         
                          
                        //查询
                        String queryString = "partnerid=" +parternId 
                                + "&version="+version
                                + "&request="+request 
                                +"&xmldata="+base64Data
                                +"&validation="+validation;
                        System.out.println(queryString);
                        out.write(queryString);
                        out.flush();
                        out.close();
                        //获取服务端的反馈  ---这里很重要  下面这行代码解决二进制流转换编码问题
                         
                        InputStream in = connection.getInputStream();
                        BufferedReader reader = new BufferedReader(new                 
                        InputStreamReader(in,"UTF-8"));
                        while ((line = reader.readLine()) != null) {
                            firstResponse += line + "\n";
                        }
                        in.close();
                        //记录接收报文日志
                        System.out.println("结果:"+firstResponse);
                        String mail_no=this.findValueFromResponse(firstResponse, "mail_no");
                        String status=this.findValueFromResponse(firstResponse, "status");
                        String pdf_info=this.findValueFromResponse(firstResponse, "pdf_info");       
                        JSONArray obj=JSONArray.fromObject(pdf_info);
                        JSONObject o=JSONObject.fromObject(obj.getJSONArray(0).get(0));
                        System.out.println(o.get("package_wdjc"));
                        if("1".equals(status)){
                            //success
                        }
                        //System.out.println(firstResponse);
                        //System.out.println(mail_no);
                         
                         
                }
                    catch (IOException e) {
                        //e.printStackTrace();
                         
                    } catch (Exception e) {
                        //e.printStackTrace();
                         
                    }

 

 截图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值