说明
在做一个项目的时候难免会与服务器打交道,这里我就做一个小的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 }
通过上面的代码就可以实现上面的效果图了,解释说明还有步骤都写在了代码里面,有什么不明白的可以给我留言,对于这篇博客有什么不对的地方,还望大家多多指导。