Android之HTTP网络通信--GET传递

说明

  在做一个项目的时候难免会与服务器打交道,这里我就做一个小的Demo来简单的说明一下HTTP的使用,我这里使用的是图灵的接口,你也可以登陆www.tuling123.com进行申请。我使用的是上面的示例接口http://www.tuling123.com/openapi/api?key=6*********ddfff&info=今天天气怎么样&loc=北京市中关村&userid=12345678,这里的接口我就不给大家完全展示出来了,大家自己去申请吧,我只给大家演示一下示例。

接口

http://www.tuling123.com/openapi/api?key=6*********ddfff&info=今天天气怎么样&loc=北京市中关村&userid=12345678

效果截图

客户端的显示(一)

logCat的显示

客户端的显示(二)


MianActivity的代码显示如下:

 1 package com.example.httpdemo;
 2 
 3 import android.os.Bundle;
 4 import android.app.Activity;
 5 import android.view.Menu;
 6 import android.widget.TextView;
 7 
 8 public class MainActivity extends Activity implements HttpDataUrlListener{
 9 
10     private HttpData httpdata;   
11     private TextView tx;
12     
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.activity_main);
17         httpdata = (HttpData) new HttpData("http://www.tuling123.com/openapi/api?key=6***************dfff&info=今天天气怎么样&loc=北京市中关村&userid=12345678",this).execute();
18         tx = (TextView)findViewById(R.id.txt);
19         
20     }
21 
22     @Override
23     public void GetDataUrl(String data) {
24         // TODO Auto-generated method stub
25         System.out.println(data);
26         tx.setText(data);
27     }
28 
29     
30 
31 }

创建的HttpData类的代码是用来Http通信

 1 package com.example.httpdemo;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.InputStreamReader;
 7 
 8 import org.apache.http.HttpEntity;
 9 import org.apache.http.HttpResponse;
10 import org.apache.http.client.ClientProtocolException;
11 import org.apache.http.client.HttpClient;
12 import org.apache.http.client.methods.HttpGet;
13 import org.apache.http.impl.client.DefaultHttpClient;
14 
15 import android.os.AsyncTask;
16 
17 public class HttpData extends AsyncTask<String, Void, String>{
18     
19     //1.创建客户端
20     private HttpClient mhttpclient;
21     //2。指明传递的方法
22     private HttpGet mhttpget;
23     //3.做出回应
24     private HttpResponse mhttpresponse;
25     //4.创建实体
26     private HttpEntity mhttpentity;
27     //5.使用数据流进行数据的传输
28     private InputStream in;
29     //6.创建缓冲区
30     private BufferedReader br;
31     //7.储存所有的数据
32     private StringBuffer sb;
33     
34     //声明接口
35     private HttpDataUrlListener listener;
36     
37     
38     
39     private String url;
40     
41     public HttpData(){
42     }
43     public HttpData(String url){
44         this.url = url;
45     }
46     public HttpData(String url,HttpDataUrlListener listener){
47         this.url = url;
48         this.listener = listener;
49     }
50     
51     @Override
52     protected String doInBackground(String... params) {
53         // TODO Auto-generated method stub
54         
55         try {
56             //实例化一个客户端
57             mhttpclient = new DefaultHttpClient();
58             //使用get方法进行传递
59             mhttpget = new HttpGet(url);
60             //通过客户端进行发送
61             mhttpresponse = mhttpclient.execute(mhttpget);
62             //通过response方法获取实体
63             mhttpentity = mhttpresponse.getEntity();
64             //通过流获取具体的内容
65             in = mhttpentity.getContent();
66             //创建缓冲区
67             br = new BufferedReader(new InputStreamReader(in));
68             String line = null;
69             sb = new StringBuffer();
70             while ((line = br.readLine())!=null){
71                 sb.append(line);
72             }
73             return sb.toString();
74         } catch (ClientProtocolException e) {
75             // TODO Auto-generated catch block
76             e.printStackTrace();
77         } catch (IOException e) {
78             // TODO Auto-generated catch block
79             e.printStackTrace();
80         }
81         //
82         
83         return null;
84     }
85     
86     @Override
87     protected void onPostExecute(String result) {
88         // TODO Auto-generated method stub
89         listener.GetDataUrl(result);
90         super.onPostExecute(result);
91     }
92 
93 }

创建一个接口HttpDataUrlListener以便于别的类可以使用这个HTTP类

1 package com.example.httpdemo;
2 
3 public interface HttpDataUrlListener {
4     
5     void GetDataUrl(String data);
6 
7 }

  通过上面的代码就可以实现上面的效果图了,解释说明还有步骤都写在了代码里面,有什么不明白的可以给我留言,对于这篇博客有什么不对的地方,还望大家多多指导。

原文地址:https://www.cnblogs.com/bingbingliang-xiaomonv/p/5247223.html