zoukankan      html  css  js  c++  java
  • 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 }

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

  • 相关阅读:
    nth-child与nth-of-type
    改变事件绑定的this的问题
    瀑布流的一些CSS实现方式
    事件捕获与冒泡的再探
    为学
    ECharts导出word 图表模糊失真
    垂直对齐:vertical-align:super属性
    Vuex- Action的 { commit } {commit}是什么写法
    修改对象中的属性名
    echarts 角度渐变环形图心得
  • 原文地址:https://www.cnblogs.com/bingbingliang-xiaomonv/p/5247223.html
Copyright © 2011-2022 走看看