展会信息港展会大全

Android HTTP通讯
来源:互联网   发布日期:2015-09-28 16:24:49   浏览:2167次  

导读:这里有一个非常棒的http通讯的总结,我看了以后茅塞顿开。先贴代码:01publicclassActivity1extendsActivity {0203privatefinalString DEBUG_TAG =System.out;0405privateTextView mTextView;06privateBut......

这里有一个非常棒的http通讯的总结,我看了以后茅塞顿开。

先贴代码:

01

public class Activity1 extends Activity {

02

03

private final String DEBUG_TAG = "System.out";

04

05

private TextView mTextView;

06

private Button mButton;

07

08

protected void onCreate(Bundle savedInstanceState) {

09

super.onCreate(savedInstanceState);

10

setContentView(R.layout.main);

11

12

mTextView = (TextView) findViewById(R.id.TextView01);

13

mButton = (Button) findViewById(R.id.Button01);

14

mButton.setOnClickListener(new httpListener());

15

}

16

17

// 设置按钮监听器

18

class httpListener implements OnClickListener {

19

public void onClick(View v) {

20

refresh();

21

}

22

}

23

24

private void refresh() {

25

String httpUrl = "http://192.168.0.101:8080/Test/test.jsp";

26

// URL可以加参数

27

// String httpUrl =

28

// "http://192.168.0.101:8080/Test/test.jsp?par=abcdefg";

29

String resultData = "";

30

URL url = null;

31

try {

32

// 创建一个URL对象

33

url = new URL(httpUrl);

34

} catch (MalformedURLException e) {

35

Log.d(DEBUG_TAG, "create URL Exception");

36

}

37

// 声明HttpURLConnection对象

38

HttpURLConnection urlConn = null;

39

// 声明InputStreamReader对象

40

InputStreamReader in = null;

41

// 声明BufferedReader对象

42

BufferedReader buffer = null;

43

String inputLine = null;

44

if (url != null) {

45

try {

46

// 使用HttpURLConnection打开连接

47

urlConn = (HttpURLConnection) url.openConnection();

48

// 得到读取的内容(流)

49

in = new InputStreamReader(urlConn.getInputStream());

50

// 创建BufferReader对象,输出时候用到

51

buffer = new BufferedReader(in);

52

// 使用循环来读取数据

53

while ((inputLine = buffer.readLine()) != null) {

54

// 在每一行后面加上换行

55

resultData += inputLine + "\n";

56

}

57

// 设置显示取的的内容

58

if (resultData != null && !resultData.equals("")) {

59

mTextView.setText(resultData);

60

} else {

61

mTextView.setText("读取的内容为空");

62

}

63

} catch (IOException e) {

64

e.printStackTrace();

65

} finally {

66

try {

67

// 关闭InputStreamReader

68

in.close();

69

// 关闭URL连接

70

urlConn.disconnect();

71

} catch (IOException e) {

72

e.printStackTrace();

73

}

74

}

75

} else {

76

Log.d(DEBUG_TAG, "URL is NULL");

77

}

78

}

79

}

第二种方式:

001

public class Activity2 extends Activity {

002

003

private final String DEBUG_TAG = "System.out";

004

005

private TextView mTextView;

006

private Button mButton;

007

008

protected void onCreate(Bundle savedInstanceState) {

009

super.onCreate(savedInstanceState);

010

setContentView(R.layout.main);

011

012

mTextView = (TextView) findViewById(R.id.TextView01);

013

mButton = (Button) findViewById(R.id.Button01);

014

mButton.setOnClickListener(new httpListener());

015

}

016

017

// 设置按钮监听器

018

class httpListener implements OnClickListener {

019

public void onClick(View v) {

020

refresh();

021

}

022

}

023

024

private void refresh() {

025

String httpUrl = "http://192.168.0.101:8080/Test/test.jsp";

026

String resultData = "";

027

URL url = null;

028

try {

029

// 创建一个URL对象

030

url = new URL(httpUrl);

031

} catch (MalformedURLException e) {

032

Log.d(DEBUG_TAG, "create URL Exception");

033

}

034

// 声明HttpURLConnection对象

035

HttpURLConnection urlConn = null;

036

// 声明InputStreamReader对象

037

InputStreamReader in = null;

038

// 声明BufferedReader对象

039

BufferedReader buffer = null;

040

String inputLine = null;

041

// 声明DataOutputStream流

042

DataOutputStream out = null;

043

if (url != null) {

044

try {

045

// 使用HttpURLConnection打开连接

046

urlConn = (HttpURLConnection) url.openConnection();

047

// 因为这个是POST请求所以要设置为true

048

urlConn.setDoInput(true);

049

urlConn.setDoOutput(true);

050

// 设置POST方式

051

urlConn.setRequestMethod("POST");

052

// POST请求不能设置缓存

053

urlConn.setUseCaches(false);

054

urlConn.setInstanceFollowRedirects(false);

055

// 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的

056

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

057

// 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成

058

// 要注意的是connectio.getOutputStream会隐含的进行connect

059

urlConn.connect();

060

// DataOutputStream流

061

out = new DataOutputStream(urlConn.getOutputStream());

062

String content = "par=" + URLEncoder.encode("abcdefg","gb2312");

063

// 将要上传的内容写入流中

064

out.writeBytes(content);

065

// 得到读取的内容(流)

066

in = new InputStreamReader(urlConn.getInputStream());

067

// 创建BufferReader对象,输出时候用到

068

buffer = new BufferedReader(in);

069

// 使用循环来读取数据

070

while ((inputLine = buffer.readLine()) != null) {

071

// 在每一行后面加上换行

072

resultData += inputLine + "\n";

073

}

074

// 设置显示取的的内容

075

if (resultData != null && !resultData.equals("")) {

076

mTextView.setText(resultData);

077

} else {

078

mTextView.setText("读取的内容为空");

079

}

080

} catch (IOException e) {

081

e.printStackTrace();

082

} finally {

083

try {

084

// 刷新DataOutputStream流

085

out.flush();

086

// 关闭DataOutputStream流

087

out.close();

088

// 关闭InputStreamReader

089

in.close();

090

// 关闭URL连接

091

urlConn.disconnect();

092

} catch (IOException e) {

093

e.printStackTrace();

094

}

095

}

096

} else {

097

Log.d(DEBUG_TAG, "URL is NULL");

098

}

099

}

100

}

第三种方式

01

public class Activity3 extends Activity{

02

private TextView mTextView;

03

private Button mButton;

04

05

protected void onCreate(Bundle savedInstanceState) {

06

super.onCreate(savedInstanceState);

07

setContentView(R.layout.main);

08

mTextView = (TextView) findViewById(R.id.TextView01);

09

mButton = (Button) findViewById(R.id.Button01);

10

mButton.setOnClickListener(new httpListener());

11

}

12

13

// 设置按钮监听器

14

class httpListener implements OnClickListener {

15

public void onClick(View v) {

16

String httpUrl = "http://192.168.0.101:8080/Test/test.jsp?par=HttpClient_android_Get";

17

// HttpGet连接对象

18

HttpGet httpRequest = new HttpGet(httpUrl);

19

try {

20

// 取的HttpClient对象

21

HttpClient httpclient = new DefaultHttpClient();

22

// 请求HttpClient,取的HttpResponse

23

HttpResponse httpResponse = httpclient.execute(httpRequest);

24

// 请求成功

25

if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

26

// 取的返回的字符串

27

String strResult = EntityUtils.toString(httpResponse.getEntity());

28

// 这个返回值可能会在行尾出现小方格

29

// 在TextView要显示的文字过滤掉回车符("\r")就可以正常显示了。

30

String strsResult = strResult.replace("\r", "");

31

mTextView.setText(strsResult);

32

} else {

33

mTextView.setText("请求错误");

34

}

35

} catch (ClientProtocolException e) {

36

mTextView.setText(e.getMessage().toString());

37

} catch (IOException e) {

38

mTextView.setText(e.getMessage().toString());

39

} catch (Exception e) {

40

mTextView.setText(e.getMessage().toString());

41

}

42

}

43

}

44

}

第四种方式

01

public class Activity4 extends Activity{

02

private TextView mTextView;

03

private Button mButton;

04

05

protected void onCreate(Bundle savedInstanceState) {

06

super.onCreate(savedInstanceState);

07

setContentView(R.layout.main);

08

mTextView = (TextView) findViewById(R.id.TextView01);

09

mButton = (Button) findViewById(R.id.Button01);

10

mButton.setOnClickListener(new httpListener());

11

}

12

13

// 设置按钮监听器

14

class httpListener implements OnClickListener {

15

public void onClick(View arg0) {

16

String httpUrl = "http://192.168.0.101:8080/Test/test.jsp";

17

// 创建HttpPost连接对象

18

HttpPost httpRequest = new HttpPost(httpUrl);

19

// 使用NameValuePair来保存要传递的Post参数

20

List params = new ArrayList();

21

// 添加要传递的参数

22

params.add(new BasicNameValuePair("par","HttpClient_android_Post"));

23

try {

24

// 设置字符集

25

HttpEntity httpentity = newUrlEncodedFormEntity(params,"gb2312");

26

// 请求httpRequest

27

httpRequest.setEntity(httpentity);

28

// 取的默认的HttpClient

29

HttpClient httpclient = new DefaultHttpClient();

30

// 取的HttpResponse

31

HttpResponse httpResponse = httpclient.execute(httpRequest);

32

// HttpStatus.SC_OK表示连接成功

33

if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

34

// 取的返回的字符串

35

String strResult = EntityUtils.toString(httpResponse.getEntity());

36

// 这个返回值可能会在行尾出现小方格

37

// 在TextView要显示的文字过滤掉回车符("\r")就可以正常显示了。

38

String strsResult = strResult.replace("\r", "");

39

mTextView.setText(strsResult);

40

} else {

41

mTextView.setText("请求错误");

42

}

43

} catch (ClientProtocolException e) {

44

mTextView.setText(e.getMessage().toString());

45

} catch (IOException e) {

46

mTextView.setText(e.getMessage().toString());

47

} catch (Exception e) {

48

mTextView.setText(e.getMessage().toString());

49

}

50

}

51

}

52

}

赞助本站

人工智能实验室

相关热词: HTTP通讯

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港