你的位置:首页 > 操作系统

[操作系统]Android之HTTP网络通信


说明

  在做一个项目的时候难免会与服务器打交道,这里我就做一个小的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   @Override14   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   @Override23   public void GetDataUrl(String data) {24     // TODO Auto-generated method stub25     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   @Override52   protected String doInBackground(String... params) {53     // TODO Auto-generated method stub54     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 block76       e.printStackTrace();77     } catch (IOException e) {78       // TODO Auto-generated catch block79       e.printStackTrace();80     }81     //82     83     return null;84   }85   86   @Override87   protected void onPostExecute(String result) {88     // TODO Auto-generated method stub89     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 }

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