java發送get,post請求


方法里面有注釋:參照csdn里面的,項目用時自己改

package com.bst.express;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.junit.Test;

public class HttpTools {

    public static final String GET_URL = "http://192.168.1.61";
    public static final String POST_URL = "http://localhost:8080/wayBill/common/api";

    /**
     * get請求
     */
    @Test
    public  void httpURLConectionGET() {

        try {
            URL url = new URL(GET_URL);// 字符串轉成請求地址
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 打開連接
            connection.connect();// 連接會話
            BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));// 響應結果為輸入流
            String line;
            StringBuilder sb = new StringBuilder();// 輸出的結果
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
            br.close();
            connection.disconnect();// 斷開連接
            System.out.println(sb.toString());
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("請求失敗 :" + e.getMessage());
        }
    }

    /**
     * post請求
     */
    @Test
    public  void httpURLConnectionPOST() {
        try {
            URL url = new URL(POST_URL);
            // 1. 將url 以 open方法返回的urlConnection
            // 連接強轉為HttpURLConnection連接.此時cnnection只是為一個連接對象,待連接中
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            // 2. 設置連接輸出流為true,默認false (post 請求是以流的方式隱式的傳遞參數)
            connection.setDoOutput(true);
            // 3. 設置連接輸入流為true
            connection.setDoInput(true);
            // 4.設置請求方式為post
            connection.setRequestMethod("POST");
            // 5.post請求緩存設為false
            connection.setUseCaches(false);
            /*
             * 6.設置請求頭里面的各個屬性 (以下為設置內容的類型,設置為經過urlEncoded編碼過的from參數)
             * application/xml:xml數據 ,application/json:json對象
             * text/html:表單數據
             */
            connection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
            // 7.建立連接
            // (請求未開始,直到connection.getInputStream()方法調用時才發起,以上各個參數設置需在此方法之前進行)
            connection.connect();
            // 8.創建輸入輸出流,用於往連接里面輸出攜帶的參數,(輸出內容為?后面的內容)
            DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());
            // 9.入參:json格式
            String parm = "{\"pubRequest\":{\"token\":\"121212\",\"method\":\"auth.login\","
                    + "\"version\":\"1.0\",\"encryType\":\"6\"},\"body\":{\"account\":\"18584084561\","
                    + "\"password\":\"123456\"}}";
            // 10.將參數輸出到連接
            dataout.writeBytes(parm);
            // 輸出完成后刷新並關閉流
            dataout.flush();
            dataout.close(); // 重要且易忽略步驟 (關閉流,切記!)
            // System.out.println("響應code:"+connection.getResponseCode());
            // 連接發起請求,處理服務器響應 (從連接獲取到輸入流並包裝為bufferedReader)
            BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
            String line;
            StringBuilder sb = new StringBuilder(); // 用來存儲響應數據
            // 循環讀取流,若不到結尾處
            while ((line = bf.readLine()) != null) {
                sb.append(line);//若要換行:sb.append(line).append(System.getProperty("line.separator"));    
            }
            bf.close(); // 重要且易忽略步驟 (關閉流,切記!)
            connection.disconnect(); // 銷毀連接
            System.out.println(sb.toString());

        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("請求失敗:"+e.getMessage());
        }

    }

}

 


免責聲明!

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



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