Android网络开发之HttpURLConnection

拥有回忆 提交于 2020-03-22 21:11:05

http是一个可靠的传输,建立在TCP/IP连接之上,缺省端口是80,其他端口号也可以用。Android可以用HttpURLConnection或HttpClient接口来开发http程序。

http通信使用最多的是Get和Post。Post和Get的不同之处在于Get的参数放在URL字串中,而Post的参数放在http请求数据中。

HttpURLConnection继承自URLConnection,都是抽象类,无法直接实例化对象。其对象主要通过URL的openConnection方法获得。

openConnection方法只创建URLConnection或HttpURLConnection实例,但是不进行真正的连接操作,并且每次openConnection都创建一个新的实例。

在连接之前,可以设置一些属性,比如超时时间等。

HttpURLConnection默认使用Get方法,如果要使用Post方法,则需要使用setRequestMethod方法。

// 示例代码:通过Post方式发送请求

URL url = new URL(“http://www.google.com”);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

// 设置输入/出流

conn.setDoOutput(true);

conn.setDoInput(true);

// 设置请求方式为Post

conn.setRequestMethod(“POST”);

// Post请求不能使用缓存

conn.setUseCaches(false);

conn.setInstanceFollowRedirects(true);

// 设置Content-type

conn.setRequestProperty(“Content-Type”,“application/x-www-form-urlencoded”);

// 在调用getOutputStream时会隐式调用conn.connect()

DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

String content = “name=” + URLEncoder.encode(“Jake”,“gb2312”);

dos.writeBytes(content);

dos.flush();

dos.close();

// 连接完成之后可以关闭这个连接

conn.disconnect();

 

// 示例代码:读取网页上的内容

InputStreamReader isr = new InputStreamReader(conn.getInputStream());

BufferedReader br = new BufferedReader(isr);

String line = null;

while(((line = br.readLine()) != null)) { … }

// 关闭连接

isr.close();

conn.disconnect();

 

// 示例代码:获取网络上的一张图片

conn.setDoInput(true);

conn.connect(); // 这条语句要不(待定)

InputStream is = conn.getInputStream();

// 将InputStream数据转换成Bitmap

Bitmap bitmap = BitmapFactory.decodeStream(is);

// 关闭数据流

is.close();

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!