•HttpUrlConnection是java的标准类,继承UrlConnection类,二者都是抽象类。其对象主要通过URL的                                                 openConnection方法获得。

package com.sumzom.teach.httpurlconnection;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

import com.example.com.sumzom.getrequest.R;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Window;
import android.widget.TextView;

public class MainActivity extends Activity {

private TextView mTextView = null;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        String url = "http://www.weather.com.cn/data/sk/101010100.html";
       
        initWithView();
        new DownloadTextTask().execute(url);
       
    }

private void initWithView() {
  // TODO Auto-generated method stub
  mTextView = (TextView) findViewById(R.id.http_get);
     
 }

/**
     * @author 欧博泰克
     * @time 2015年9月23日
     * @contact QQ:2356066132
     * @instructions 采用httpUrlConnection进行网络传输;
     * */
 private InputStream openHttpCennection(String urlString) throws IOException{
  
  InputStream is = null;//建立/声明/创建/实例化一个输入流(这四种讲法都可以)
  
  int response = -1;//响应编码
  
  URL url = new URL(urlString);
  Log.i("openHttpCennection", urlString);
  //使用httpurlconnection打开网络连接;
  URLConnection urlConn = url.openConnection();
  
  HttpURLConnection httpConn = null;
  
  if (!(urlConn instanceof HttpURLConnection)) {
   
   throw new IOException("无效网络连接");
   
  }
  
  try {
   
   httpConn = (HttpURLConnection)urlConn;
   httpConn.setAllowUserInteraction(false);//设置允许用户交互
   httpConn.setInstanceFollowRedirects(true);//集实例遵循重定向
   httpConn.setRequestMethod("GET");
   //httpConn.setRequestProperty(field, newValue) //设置访问报头,简称报文
   httpConn.connect();
   response = httpConn.getResponseCode();//响应码,如果等于200则连接成功
   
   /**
    * resposeCode有两种表达方式:
    * 1:response == 200;
    * 2:response == HttpURLConnection;
    * */
   if (response == HttpURLConnection.HTTP_OK) {
    
    is = httpConn.getInputStream();//接受输入流
    
   }
   
  } catch (Exception e) {
   
   throw new IOException("网络连接错误");
  }
  
  return is;
  }
   
 /**
  * i/o流是伴随着数据的读写产生的
  * 1、获取输入流
  * 2、读取输入流
  * 3、将输入流写入buffer(作用,数据缓冲区)
  * 4、从数据流从buffer一行行读出
  * 5、返回读出的数据流
  * */
 private String downLoadText(String url){
  Log.i("downLoadText", "downLoadText");
  String resultData = "";
  
  try {
   InputStream is = openHttpCennection(url);
   //读取输入流
   InputStreamReader in = new InputStreamReader(is,"UTF-8");
   
   //为输入创建bufferedreader
   
   BufferedReader buffer = new BufferedReader(in);
   String inputLine = null;
   //循环读取网络获取数据
   //buffer缓冲区
   
   
   while ( (inputLine=buffer.readLine())!=null) {
    
    
    resultData += inputLine + "\n";
    
    Log.i("循环流读取", resultData);
    
   }
   
   //关闭流的读取(千万不能忘记)
   in.close();
   
  } catch (Exception e) {
   System.out.println("循环流读取"+resultData);
   e.printStackTrace();
  }
  
  return resultData;
 }
 
 private class DownloadTextTask extends AsyncTask<String, Void, String>{
  
  @Override
  protected String doInBackground(String... arg0) {
   // TODO Auto-generated method stub
   return downLoadText(arg0[0]);
  }
  
  @Override
  protected void onPostExecute(String result) {
   // TODO Auto-generated method stub
   super.onPostExecute(result);
   mTextView.setText(result); 
  }
  
 }
 
}

HttpUrlConnection的更多相关文章

  1. HttpUrlConnection 基础使用

    From https://developer.android.com/reference/java/net/HttpURLConnection.html HttpUrlConnection: A UR ...

  2. HttpURLConnection类

    导语 java.net.HttpURLConnectin类是URLConnection类的抽象子类.它在处理协议为HTTP的URL时特别有效.具体而言,它通过它可以获取和设置请求方法,确定是否重定向, ...

  3. android 之HttpURLConnection的post,get方式请求数据

    get方式和post方式的区别: 1.请求的URL地址不同: post:"http://xx:8081//servlet/LoginServlet" get:http://xxx: ...

  4. Android 6.0 使用HttpURLConnection 使用Get提交遇到405等问题。

    HttpURLConnection 在调用connection.setDoOutput(true)之后会自动把提交方式改为POST.然后调用方法的时候有可能会出现这种情况 在调用get的时候设置为co ...

  5. android——HttpUrlConnection

    前面了解了下服务端和客户端的相关知识 ,那么他们是通过什么来进行进行连接的呢? Android可以用HttpURLConnection或HttpClient接口来开发http程序.在Android 上 ...

  6. HttpUrlConnection发送url请求(后台springmvc)

    1.HttpURLConnection发送url请求 public class JavaRequest { private static final String BASE_URL = "h ...

  7. Android探索之HttpURLConnection网络请求

    前言: 最近一直想着学习一下比较好的开源网络框架okhttp,想着学习之前还是先总结一下Android原生提供的网络请求.之前一直在使用HttpClient,但是android 6.0(api 23) ...

  8. Android使用HttpURLConnection通过POST方式发送java序列化对象

    使用HttpURLConnection类不仅可以向WebService发送字符串,还可以发送序列化的java对象,实现Android手机和服务器之间的数据交互. Android端代码: public ...

  9. java http工具类和HttpUrlConnection上传文件分析

    利用java中的HttpUrlConnection上传文件,我们其实只要知道Http协议上传文件的标准格式.那么就可以用任何一门语言来模拟浏览器上传文件.下面有几篇文章从http协议入手介绍了java ...

随机推荐

  1. K & DN 的前世今生(微软开源命名变革)

    一个非常有意思的 Issue:Can we rename K? 在这个 Issue 中,有大量的社区开发者讨论了微软开源命名问题,主要是 K 如何进行替换掉?看来大伙都对微软项目命名有歧义,首先,再次 ...

  2. EntityFramework DbContext 线程安全

    先看这一段异常信息: A second operation started on this context before a previous asynchronous operation compl ...

  3. Cesium原理篇:6 Renderer模块(1: Buffer)

    刚刚结束完地球切片的渲染调度后,打算介绍一下目前大家都很关注的3D Tiles方面的内容,但发现要讲3D Tiles,或者充分理解它,需要对DataSource,Primitive要有基础,而这要求对 ...

  4. jQuery打造智能提示插件

    插件根据实际需要在单功能上封装的,实现传入后台数据地址,要保存值的input,前台要传入的参数(过滤条件),来返回下拉提示数据,数据过多可上下滚动选择,选择后显示文本与对应的值,供后台操作,如图: j ...

  5. 【Python实战】Pandas:让你像写SQL一样做数据分析(一)

    1. 引言 Pandas是一个开源的Python数据分析库.Pandas把结构化数据分为了三类: Series,1维序列,可视作为没有column名的.只有一个column的DataFrame: Da ...

  6. co.js - 让异步代码同步化

    近期在全力开发个人网站,并且又沉淀了一些前后端的技术.近期会频繁更新. 这篇文章首发于我的个人网站:听说 - https://tasaid.com/,建议在我的个人网站阅读,拥有更好的阅读体验. 这篇 ...

  7. Windows下程序打包发布时的小技巧

    一.背景 Windows下开发的应用程序在发布时,需要将其依赖的一些动态链接库一起打进安装包里面去.这个时候,快速确定这个程序到底依赖哪些动态链接库变得非常重要.很久以前写过一篇关于Qt程序安装包制作 ...

  8. Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)

    为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 ...

  9. LinQ C#防注入式攻击实例代码

    注入式攻击是Web开放项目中开发人员的第一时间要考虑的问题,下面就我的开发实例分享给大家,有用的的话就点个赞吧. 定義賬戶信息類 public class UserInfors { public st ...

  10. 【C#进阶系列】23 程序集加载和反射

    程序集加载 程序集加载,CLR使用System.Reflection.Assembly.Load静态方法,当然这个方法我们自己也可以显式调用. 还有一个Assembly.LoadFrom方法加载指定路 ...