HttpUrlConnection发送url请求(后台springmvc)

boyanx8个月前技术教程50

1.HttpURLConnection发送url请求

public class JavaRequest {
     private static final String BASE_URL = "http://localhost:8080/dsdemo/";
     public static String userToken = null;
     public static String problemName = null;
     public static String sendPost(String sufUrl, JSONObject params) {
        DataOutputStream out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(BASE_URL+sufUrl);
            // 打开和URL之间的连接
            HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
            connection.setDoOutput(true);  
            connection.setDoInput(true);  
            connection.setUseCaches(false);  
            connection.setInstanceFollowRedirects(true);  
            connection.setRequestMethod("POST"); // 设置请求方式  
            connection.setRequestProperty("Connection", "Keep-Alive");
            connection.connect();
            out = new DataOutputStream (connection.getOutputStream());
            // 发送请求参数,防止中文乱码
            out.write(jsonToUrlParams(params).getBytes("UTF-8"));
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!");
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        System.out.println(result);
        return result;
    }    
     
    private static String jsonToUrlParams(JSONObject params){
        StringBuilder sb = new StringBuilder();
        sb.append("userToken=").append(userToken);
        for(Iterator<?> it = params.keys(); it.hasNext(); ){
            String key = (String) it.next();
            sb.append("&").append(key).append("=").append(params.get(key));
        }
        return sb.toString();
    }
}

遗留问题:

  a.按照网上说的发送 json格式的字符串,但是后台无法接收到。所以这里将jsonObject转化成 url 参数的形式。

  b.jquery发送json格式的数据是可以接收到的。

 <script type="text/javascript">
      var sendData = {
          username: "hjz",
          password: "123"
      };
    (function (){
         $.ajax({  
             type:'post',      
             url:'http://localhost:8080/dsdemo/userRegister',  
             data: sendData,  
             dataType:'json',  
             success:function(data){  
                 alert(JSON.stringify(data));
             } ,
             error: function(data){
                 alert(JSON.stringify(data));
             }
       });  
    })(); 
  </script>

另外可能会出现中文乱码的问题:

  a. 首先发送数据利用DataOutputStream out.write(jsonToUrlParams(params).getBytes("UTF-8"));

  b. 接收后台 
response.setCharacterEncoding("utf-8");

      
request.setCharacterEncoding("utf-8");

私信666领取资料

相关文章

前端常见面试 - 请求篇(前端面试题csdn)

对于前端来说,请求是前端日常工作必备的,通过请求才能与后端进行数据交互,尤其在现在前后端分离的开发模式下,请求显得就更加重要。因此,对于前端开发者来说,掌握请求就很重要。下面将从 http 请求和常见...

Jquery实现Ajax请求的几种常见方式总结

1.1、JQuery的GET方式实现AJAX核心语法:$.get(url,[data],[callback],[type]);url:请求的资源路径。data:发送给服务器端的请求参数,格式可以是ke...

图片上传并回显Ajax异步篇(图片上传jsp)

内容导读 “FormData对象用以将数据编译成键值对,以便用XMLHttpRequest来发送数据。这是官方的讲解,我来说一下我的理解,我们new 一个FormData( $(form) )对象时,...

基于SpringBoot从0到1编写一个图书管理系统(附源码)

项目源码地址: https://muzidong.com/productDetail/8ff44c71db6b4b6aa30c71e646b1c557需求分析基于SSM + MySql + LayUI...

前端小技巧:利用Blob对象切片上传大文件

1.什么是Blob对象?Blob对象表示二进制文件的数据内容,并且可以操作二进制文件,因此它常用于读写文件。Blob对象的构造函数Blob()由浏览器原生提供,实例化对象如下:let blob=new...

使用JavaScript定时抓取网页内容,轻松实现指定信息提

随着互联网的快速发展,人们对于信息的获取需求也越来越大。而对于开发者来说,获取网页上的指定内容是一个常见的需求。在Javascript中,我们可以通过定时任务来实现对网页内容的抓取。本文将介绍如何使用...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。