• 简单Android HttpURLConnectionGet方式


    Android 使用Http 链接获取数据的方式有两种 一个是HttpURLConnection 另一个是HttpClient。

    每一种都有两种传输方式:GET 和 POST;(另外还有专门的HttpGet 和HttpPost 方式)

    其二者区别

    1. GET请求请提交的数据放置在HTTP请求协议头中(http://www.xxx.com/xxx?action="xxx"&action2="xxx");而POST提交的数据则放在实体数据中(使用NameValuePair来保存要传递的Post参数);
    2. GET方式提交的数据最多只能有1024字节,而POST则没有此限制;

    这里主要介绍 HttpConnection 的子类 HttpURLConnection;

    核心代码:

    View Code
     1 URL url = new URL(urlString);  
     2         HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
     3         //设置超时时间
     4         urlConn.setConnectTimeout(1000);
     5         //链接状态
     6         int code = urlConn.getResponseCode();
     7         if(code == HttpURLConnection.HTTP_OK){
     8              //得到读取的内容(流)  
     9             InputStreamReader in = new InputStreamReader(urlConn.getInputStream());  
    10             // 为输出创建BufferedReader  
    11             BufferedReader buffer = new BufferedReader(in);  
    12             String inputLine = null;  
    13             //使用循环来读取获得的数据  
    14             while (((inputLine = buffer.readLine()) != null))  
    15             {  
    16                 //我们在每一行后面加上一个"\n"来换行  
    17                 resultData += inputLine + "\n";  
    18             }    
    19             //关闭InputStreamReader  
    20             in.close(); 
    21         }
    22         //关闭http连接  
    23         urlConn.disconnect();                

    这个是HttpURLConnection 的Get的方式,无需设置,默认为Get方式,如要Post方式则 setDoOutput(ture) ,其他方式(OPTIONSHEADPUTDELETEand TRACE) 则使用setRequestMethod(String).

    全部代码:

    View Code
     1 public class HttpConnActivity extends Activity {
     2     
     3       String googleWeatherUrl2 = "http://m.weather.com.cn/data/101010100.html";
     4     private String resultData = null;
     5     @Override
     6     public void onCreate(Bundle savedInstanceState) {
     7         super.onCreate(savedInstanceState);
     8         setContentView(R.layout.activity_json);
     9         Thread mThread = new Thread(GetWeatherDataThread);
    10         mThread.start();
    11     }
    12     
    13     private Runnable  GetWeatherDataThread = new Runnable() {
    14         
    15         @Override
    16         public void run() {
    17             // TODO Auto-generated method stub
    18             try {
    19                 getWeatherData();
    20             } catch (IOException e) {
    21                 // TODO Auto-generated catch block
    22                 e.printStackTrace();
    23             }
    24             mHandler.sendEmptyMessage(0);
    25         }
    26     };
    27     
    28     Handler mHandler = new Handler(){
    29 
    30         @Override
    31         public void handleMessage(Message msg) {
    32             // TODO Auto-generated method stub
    33             super.handleMessage(msg);
    34             if(msg.what == 0){
    35                 System.out.println(resultData);
    36                 System.out.println("线程结束");
    37             }
    38         }
    39         
    40     };
    41     
    42     public void getWeatherData() throws IOException {
    43         URL url = new URL(googleWeatherUrl2);  
    44         HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
    45         urlConn.setConnectTimeout(1000);
    46         int code = urlConn.getResponseCode();
    47         if(code == HttpURLConnection.HTTP_OK){
    48              //得到读取的内容(流)  
    49             InputStreamReader in = new InputStreamReader(urlConn.getInputStream());  
    50             // 为输出创建BufferedReader  
    51             BufferedReader buffer = new BufferedReader(in);  
    52             String inputLine = null;  
    53             //使用循环来读取获得的数据  
    54             while (((inputLine = buffer.readLine()) != null))  
    55             {  
    56                 //我们在每一行后面加上一个"\n"来换行  
    57                 resultData += inputLine + "\n";  
    58             }    
    59             //关闭InputStreamReader  
    60             in.close(); 
    61         }
    62         //关闭http连接  
    63         urlConn.disconnect();
    64     }
    65     @Override
    66     public boolean onCreateOptionsMenu(Menu menu) {
    67         getMenuInflater().inflate(R.menu.activity_json, menu);
    68         return true;
    69     }
    70 }
  • 相关阅读:
    C++ 对象模型学习记录(2) 第3章 data语义学
    C++ 对象模型学习记录(1) 第2章 构造函数语义学
    C ++ 对象模型学习记录(4) function 语义学 (未完待续)
    C++ 对象模型学习记录(3) 第1章 关于对象(未完)
    设计模式复习 之 代理模式
    大数运算
    effective C ++ 学习笔记之 item 31 将文件间的编译依赖关系降至最低(未完成)
    Java 复习 之1 多线程
    SQL中char varchar nchar nvarchar ntext区别和使用(资料汇总)
    .Net中的加密解密
  • 原文地址:https://www.cnblogs.com/gfqFighting/p/2944017.html
Copyright © 2020-2023  润新知