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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM