java發送原生的http請求

發送get請求

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

public class HttpGetUtil {
    public static void main(String[] args) {
        HttpURLConnection conn = null;
        InputStream inputStream = null;
        BufferedReader bufferedReader = null;

        try {
            URL url = new URL("http://www.xxx.com/xxx/check?orgCode=321300&waybillNo=773011197999686");
            conn = (HttpURLConnection)url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5000);
            conn.setReadTimeout(5000);

            //設置請求頭(如果沒有請求頭信息,則不需要寫這一項)
            conn.setRequestProperty("appId", "app_service");

            conn.connect();

            inputStream = conn.getInputStream();
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));

            //拼接返回參數
            StringBuilder sb = new StringBuilder();
            String responseMsg = null;
            while ((responseMsg = bufferedReader.readLine()) != null){
                sb.append(responseMsg);
            }

            System.out.println(sb.toString());

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            if(bufferedReader != null){
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(inputStream != null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null){
                conn.disconnect();
            }
        }
    }
}
  • connect() 方法
    1.這段代碼已經使用url.openConnection()創建了連接,connect()方法可有可無。
    2.如果使用HttpURLConnection conn=new HttpURLConnection(new URL(“路徑”)),則需要使用connect()方法進行連接。

發送post請求

import com.alibaba.fastjson.JSON;
import com.mr.zhang.thread.dto.ParamDto;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class HttpPostUtil {
    public static void main(String[] args) {
        HttpURLConnection conn = null;
        InputStream inputStream = null;
        BufferedReader bufferedReader = null;

        try {
            URL url = new URL("http://www.xxx.com/xxx/xxxxxx/xxxxxxxxxxxxx");
            conn = (HttpURLConnection) url.openConnection();//通過openConnection創建對象
            conn.setRequestMethod("POST");
            //設置請求體格式,這裏設置的是json格式
            conn.setRequestProperty("Content-Type", "application/json; charset=utf-8;");
            //連接服務器超時時間ms
            conn.setConnectTimeout(5000);
            //讀取服務器返回超時時間ms
            conn.setReadTimeout(5000);

            //設置請求頭
            conn.setRequestProperty("appId", "app_service");

            //設置請求體
            ParamDto paramDto = new ParamDto();
            paramDto.setOrgCode("222001");
            paramDto.setDataType("INTERCEPT");
            paramDto.setPdaCode("JSYG22200110001");
            paramDto.setVersionNo("1573360821238");
            String body = JSON.toJSONString(paramDto);

            //設置成true,向遠程服務器寫數據
            conn.setDoOutput(true);//默認是false,無法寫入body
            OutputStream outputStream = conn.getOutputStream();
            outputStream.write(body.getBytes());
            outputStream.flush();
            outputStream.close();

            inputStream = conn.getInputStream();
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
            StringBuilder sb = new StringBuilder();
            String responseMsg = null;
            while ((responseMsg = bufferedReader.readLine()) != null){
                sb.append(responseMsg);
            }

            System.out.println(sb.toString());

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            if(bufferedReader != null){
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(inputStream != null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null){
                conn.disconnect();
            }
        }
    }
}
  • conn.setDoOutput(true);
    默認值是false,向遠程服務器寫數據時,需要設置成true

  • conn.setDoInput(true);
    默認值是true,從遠程服務器讀數據時使用。因爲默認是true,該參數可以不設置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章