HttpUrlConnection发送url请求(后台springmvc)

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");

时间: 2024-10-26 15:46:42

HttpUrlConnection发送url请求(后台springmvc)的相关文章

使用httpclient实现http链接池与使用HttpURLConnection发送http请求的方法与性能对比

使用httpclient实现http链接池与使用HttpURLConnection发送http请求的方法与性能对比 在项目中需要使用http调用接口,实现了两套发送http请求的方法,一个是使用apache的httpclient提供的http链接池来发送http请求,另一个是使用java原生的HttpURLConnection来发送http请求,并对两者性能进行了对比. 使用httpclient中的链接池发送http请求 使用最新的4.5.2版httpclient进行实现.在maven中引入 <

【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法

Java原生的API可用于发送HTTP请求 即java.net.URL.java.net.URLConnection,JDK自带的类: 1.通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection) 2.设置请求的参数 3.发送请求 4.以输入流的形式获取返回内容 5.关闭输入流 封装请求类 1 package com.util; 2 3 import java.io.BufferedReader; 4 import java.io.IOExcept

HttpURLConnection 发送PUT请求 json请求体 与服务端接收

public void testHttp() { String result = ""; try { URL postURL = new URL("http://localhost:8080/webTest/TestSerlvte"); HttpURLConnection conn = (HttpURLConnection) postURL.openConnection(); conn.setDoOutput(true); conn.setDoInput(true)

java 使用原生HttpURLConnection发送post请求

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.Cale

HttpURLConnection发送post请求信息

public static void testHttpQuest() { // {'pfxInfo':'no','isPfx':'no','signInfo':'中文','passCode':'','signType':'yes'} logger.info("开始下载更新CRL"); // 创建URL 对象 URL url = null; byte[] b = null; FileOutputStream fos = null; InputStream is = null; HttpU

Java利用HttpURLConnection发送post请求

URL url = null; HttpURLConnection http = null; try { url = new URL(urls); http = (HttpURLConnection) url.openConnection(); http.setDoInput(true); http.setDoOutput(true); http.setUseCaches(false); http.setConnectTimeout(50000);//设置连接超时 //如果在建立连接之前超时期满

利用HttpURLConnecion通过Nginx向代理邮件服务器发送POST请求

第一步:获取邮件各种参数,通过URLencode和Base64编码之后发送请求参数. 请求参数中,有邮件附件这样的大件,如何当做请求发送呢? 首先,将邮件内容转为字节数组,转为字节数组之后可以当做二进制操作了,保持了附件最原始的面貌,不会被任何其他因素影响. byte[] att= attachment.getContent(); //附件内容 //利用Base64进行加密传输,虽然加密的不够 Base64 base64 = new Base64(); //org.apache.commons.

java 常见几种发送http请求案例

1 import java.io.FileOutputStream; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.io.InputStreamReader; 5 import java.io.OutputStreamWriter; 6 import java.io.UnsupportedEncodingException; 7 import java.net.HttpURLConnection

Java发布webservice应用并发送SOAP请求调用

webservice框架有很多,比如axis.axis2.cxf.xFire等等,做服务端和做客户端都可行,个人感觉使用这些框架的好处是减少了对于接口信息的解析,最主要的是减少了对于传递于网络中XML的解析,代价是你不得不在你的框架中添加对于这些框架的依赖.个人观点是:服务端使用这些框架还行,如果做客户端,没必要使用这些框架,只需使用httpclient即可. 一.创建并发布一个简单的webservice应用 1.webservice 代码: import javax.jws.WebMethod