Android 用HttpURLConnection访问网络的方法
一、HttpURLConnection以GET方式访问网络:
HttpURLConnectionconnection=null;
try{
URLurl=newURL("https://www.xxx.com/");
connection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");//设置访问方式为“GET”
connection.setConnectTimeout(8000);//设置连接服务器超时时间为8秒
connection.setReadTimeout(8000);//设置读取服务器数据超时时间为8秒
if(HttpURLConnection.HTTP_OK==connection.getResponseCode()){
//从服务器获取响应并把响应数据转为字符串打印
InputStreamin=connection.getInputStream();
BufferedReaderreader=newBufferedReader(newInputStreamReader(in));
StringBuilderresponse=newStringBuilder();
Stringline;
while(null!=(line=reader.readLine())){
response.append(line);
}
Log.d(TAG,response.toString());
}
}catch(Exceptione){
e.printStackTrace();
}finally{
if(null!=connection){
connection.disconnect();
}
}
二、HttpURLConnection以POST方式访问网络:
HttpURLConnectionconnection=null;
try{
URLurl=newURL("https://www.xxx.com/");
connection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
connection.setDoOutput(true);//使用URL连接进行输出
connection.setDoInput(true);//使用URL连接进行输入
connection.setUseCaches(false);//忽略缓存
//建立输出流,并写入数据
OutputStreamoutputStream=connection.getOutputStream();
DataOutputStreamdataOutputStream=newDataOutputStream(outputStream);
dataOutputStream.writeBytes("username=admin&password=888888");
dataOutputStream.close();
if(HttpURLConnection.HTTP_OK==connection.getResponseCode()){
//当正确响应时处理数据
StringBufferresponse=newStringBuffer();
Stringline;
BufferedReaderresponseReader=
newBufferedReader(newInputStreamReader(connection.getInputStream(),"utf-8"));
//处理响应流,必须与服务器响应流输出的编码一致
while(null!=(line=responseReader.readLine())){
response.append(line);
}
responseReader.close();
Log.d(TAG,response.toString());
}
}catch(Exceptione){
e.printStackTrace();
}finally{
if(null!=connection){
connection.disconnect();
}
}
注意:
1.HTTP访问是不允许在主线程进行的,否则会报错。因此上面的操作应该在新线程中进行。
2.一般要用HttpURLConnection.getResponseCode()==200来判断是否正常响应。为true则正常响应。
3.在Android2.2及以下版本,使用的是HttpClient,Android2.3及以上版本,使用的是HttpURLConnection,而Android5.1之后废弃了HttpClient的相关Api。因此HttpClient用法不再进行研究。
4.以POST方式提交数据时,每条数据要以键值对的方式提交,各条数据之间以&隔开。比如上面的代码中dataOutputStream.writeBytes(“username=admin&password=888888”);
5.上面用到了StringBuilder和StringBuffer,没有什么特别用意,只是顺便用下。StringBuilder在单线程下比StringBuffer更高效,但不是线程安全的。
以上这篇Android用HttpURLConnection访问网络的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。