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

先贴代码:

01 publicclassActivity1extendsActivity {
02
03 privatefinalString DEBUG_TAG ="System.out";
04
05 privateTextView mTextView;
06 privateButton mButton;
07
08 protectedvoidonCreate(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(newhttpListener());
15 }
16
17 // 设置按钮监听器
18 classhttpListenerimplementsOnClickListener {
19 publicvoidonClick(View v) {
20 refresh();
21 }
22 }
23
24 privatevoidrefresh() {
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 =newURL(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 =newInputStreamReader(urlConn.getInputStream());
50 // 创建BufferReader对象,输出时候用到
51 buffer =newBufferedReader(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 publicclassActivity2extendsActivity {
002
003 privatefinalString DEBUG_TAG ="System.out";
004
005 privateTextView mTextView;
006 privateButton mButton;
007
008 protectedvoidonCreate(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(newhttpListener());
015 }
016
017 // 设置按钮监听器
018 classhttpListenerimplementsOnClickListener {
019 publicvoidonClick(View v) {
020 refresh();
021 }
022 }
023
024 privatevoidrefresh() {
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 =newURL(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 =newDataOutputStream(urlConn.getOutputStream());
062 String content ="par="+ URLEncoder.encode("abcdefg","gb2312");
063 // 将要上传的内容写入流中
064 out.writeBytes(content);
065 // 得到读取的内容(流)
066 in =newInputStreamReader(urlConn.getInputStream());
067 // 创建BufferReader对象,输出时候用到
068 buffer =newBufferedReader(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 publicclassActivity3extendsActivity{
02 privateTextView mTextView;
03 privateButton mButton;
04
05 protectedvoidonCreate(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(newhttpListener());
11 }
12
13 // 设置按钮监听器
14 classhttpListenerimplementsOnClickListener {
15 publicvoidonClick(View v) {
16 String httpUrl ="http://192.168.0.101:8080/Test/test.jsp?par=HttpClient_android_Get";
17 // HttpGet连接对象
18 HttpGet httpRequest =newHttpGet(httpUrl);
19 try{
20 // 取的HttpClient对象
21 HttpClient httpclient =newDefaultHttpClient();
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 publicclassActivity4extendsActivity{
02 privateTextView mTextView;
03 privateButton mButton;
04
05 protectedvoidonCreate(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(newhttpListener());
11 }
12
13 // 设置按钮监听器
14 classhttpListenerimplementsOnClickListener {
15 publicvoidonClick(View arg0) {
16 String httpUrl ="http://192.168.0.101:8080/Test/test.jsp";
17 // 创建HttpPost连接对象
18 HttpPost httpRequest =newHttpPost(httpUrl);
19 // 使用NameValuePair来保存要传递的Post参数
20 List params =newArrayList();
21 // 添加要传递的参数
22 params.add(newBasicNameValuePair("par","HttpClient_android_Post"));
23 try{
24 // 设置字符集
25 HttpEntity httpentity =newUrlEncodedFormEntity(params,"gb2312");
26 // 请求httpRequest
27 httpRequest.setEntity(httpentity);
28 // 取的默认的HttpClient
29 HttpClient httpclient =newDefaultHttpClient();
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 }

更多相关文章

  1. Android(安卓)sqlite cursor的遍历
  2. PackageManagerService(Android5.1)深入分析(四)安装应用
  3. android之GSON解析JSON
  4. Android(4.X)学习笔记
  5. 【Android】通过软引用实现图片缓存,防止内存溢出
  6. 用PC应用程序通过USB读写Andriod里面的数据
  7. Android:时间控件
  8. Android控件开发之Gallery
  9. Android开发经验总结

随机推荐

  1. Android(安卓)实现简单打电话
  2. Android(安卓)博客园客户端 (一) 基本界面
  3. 开源库android-state-button 为Android
  4. Android(安卓)根据item大小实现自动排列
  5. android实现上下滑动
  6. Android(安卓)拦截 HOME 按键
  7. Android使用SQLiteDatabase直接存取数据
  8. Android(安卓)greenDAO 3.2.2简单使用
  9. android按键灯流程分析
  10. Android期末机试考核模拟题