1. 程式人生 > >JAVA使用原始HttpURLConnection傳送POST資料

JAVA使用原始HttpURLConnection傳送POST資料

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

package com.newflypig.demo;

/**

* 使用jdk自帶的HttpURLConnection向URL傳送POST請求並輸出響應結果

* 引數使用流傳遞,並且硬編碼為字串"name=XXX"的格式

*/

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

public class SendPostDemo {

public static void main(String[] args) throws Exception{

String urlPath = new String("http://localhost:8080/Test1/HelloWorld"

);   

//String urlPath = new String("http://localhost:8080/Test1/HelloWorld?name=丁丁".getBytes("UTF-8"));

String param="name="+URLEncoder.encode("丁丁","UTF-8");

//建立連線

URL url=new URL(urlPath);

HttpURLConnection httpConn=(HttpURLConnection)url.openConnection();

//設定引數

httpConn.setDoOutput(true);     //需要輸出

httpConn.setDoInput(true);      //需要輸入

httpConn.setUseCaches(false);   //不允許快取

httpConn.setRequestMethod("POST");      //設定POST方式連線

//設定請求屬性

httpConn.setRequestProperty("Content-Type""application/x-www-form-urlencoded");

httpConn.setRequestProperty("Connection""Keep-Alive");// 維持長連線

httpConn.setRequestProperty("Charset""UTF-8");

//連線,也可以不用明文connect,使用下面的httpConn.getOutputStream()會自動connect

httpConn.connect();

//建立輸入流,向指向的URL傳入引數

DataOutputStream dos=new DataOutputStream(httpConn.getOutputStream());

dos.writeBytes(param);

dos.flush();

dos.close();

//獲得響應狀態

int resultCode=httpConn.getResponseCode();

if(HttpURLConnection.HTTP_OK==resultCode){

StringBuffer sb=new StringBuffer();

String readLine=new String();

BufferedReader responseReader=new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));

while((readLine=responseReader.readLine())!=null){

sb.append(readLine).append("\n");

}

responseReader.close();

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

}   

}

}

JAVA使用HttpURLConnection傳送POST資料是依靠OutputStream流的形式傳送

具體編碼過程中,引數是以字串“name=XXX”這種形式傳送