HttpUrlConnection
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的更多相关文章
- HttpUrlConnection 基础使用
From https://developer.android.com/reference/java/net/HttpURLConnection.html HttpUrlConnection: A UR ...
- HttpURLConnection类
导语 java.net.HttpURLConnectin类是URLConnection类的抽象子类.它在处理协议为HTTP的URL时特别有效.具体而言,它通过它可以获取和设置请求方法,确定是否重定向, ...
- android 之HttpURLConnection的post,get方式请求数据
get方式和post方式的区别: 1.请求的URL地址不同: post:"http://xx:8081//servlet/LoginServlet" get:http://xxx: ...
- Android 6.0 使用HttpURLConnection 使用Get提交遇到405等问题。
HttpURLConnection 在调用connection.setDoOutput(true)之后会自动把提交方式改为POST.然后调用方法的时候有可能会出现这种情况 在调用get的时候设置为co ...
- android——HttpUrlConnection
前面了解了下服务端和客户端的相关知识 ,那么他们是通过什么来进行进行连接的呢? Android可以用HttpURLConnection或HttpClient接口来开发http程序.在Android 上 ...
- HttpUrlConnection发送url请求(后台springmvc)
1.HttpURLConnection发送url请求 public class JavaRequest { private static final String BASE_URL = "h ...
- Android探索之HttpURLConnection网络请求
前言: 最近一直想着学习一下比较好的开源网络框架okhttp,想着学习之前还是先总结一下Android原生提供的网络请求.之前一直在使用HttpClient,但是android 6.0(api 23) ...
- Android使用HttpURLConnection通过POST方式发送java序列化对象
使用HttpURLConnection类不仅可以向WebService发送字符串,还可以发送序列化的java对象,实现Android手机和服务器之间的数据交互. Android端代码: public ...
- java http工具类和HttpUrlConnection上传文件分析
利用java中的HttpUrlConnection上传文件,我们其实只要知道Http协议上传文件的标准格式.那么就可以用任何一门语言来模拟浏览器上传文件.下面有几篇文章从http协议入手介绍了java ...
随机推荐
- Android随笔之——跨进程通信(一) Activity篇
在Android应用开发中,我们会碰到跨进程通信的情况,例如:你用QQ通讯录打电话的时候会调用系统的拨号应用.某些新闻客户端可以将新闻分享到QQ.微信等应用,这些都是跨进程通信的情况.简而言之,就是一 ...
- C/C++,彩色图像小游戏。
这里声明,这个游戏是由本人,在大一暑假自作的第二个小游戏,转载请注明原帖地址,谢谢! 所有图片都是我一个人用ps搞出来的,比较简单.........毕竟不是学图像制作的,请体谅!另外,图片 不放出来了 ...
- js 获取当前的时间
第一个小程序,用js获取当前的时间,,比较特殊的是 月是从0开始算的,显示的时候要加1,获取日用getDate(),获取周 getDay(), 直接上代码 <!DOCTYPE html> ...
- objective-c 语法快速过(1)
有一定 c++或者 java 基础,过一遍 oc 语法即可,都是相通的,个人认为难点是 oc 的内存管理,虽然有了 ARC,但是也需要学习下,因为有旧软件的维护. 建立在C语言的基础上,增加了一层小范 ...
- 千呼万唤始出来:Apache Spark2.0正式发布
我们很荣幸地宣布,自7月26日起Databricks开始提供Apache Spark 2.0的下载,这个版本是基于社区在过去两年的经验总结而成,不但加入了用户喜爱的功能,也修复了之前的痛点. 本文总结 ...
- spring笔记--依赖注入之针对不同类型变量的几种注入方式
控制反转和依赖注入讲的都是一个概念,只不过是站在了不同的角度,所谓的依赖注入: 是指在运行期,由外部容器动态地将依赖对象注入到组件中.当spring容器启动后,spring容器初始化,创建并管理bea ...
- iOS 商品倒计时 限时特价 限时优惠 功能的封装
最近项目中多个页面用到了 商品特价倒计时的功能 为了偷懒 于是自己封装了一个限时抢购 倒计时的view 代码实现如下: 定向价 限时特价 模型代码实现: #pragma mark 商品定向价模型 @ ...
- globalization与全球化
本配置节是关于配置应用程序的全球化设置. <globalization <!--以下两个特性默认编码为 UTF-8,该编码在 Machine.config 文件(在安装 .NET Fram ...
- c#自定义日志记录
废话不多说,直接上代码: 很简单:将类复制到项目中,最后在配置文件上配置一下:logUrl即可. 默认保存在:项目/temp/log /// <summary> /// 日志类 /// & ...
- 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog
[源码下载] 背水一战 Windows 10 (37) - 控件(弹出类): MessageDialog, ContentDialog 作者:webabcd 介绍背水一战 Windows 10 之 控 ...