Android网络编程就是客户端与服务器端的交互
方式一用GET交互
1、首先要定义统一资源定位符URL通过字符串获取该资源的位置
2、定义一个输入流用于读取服务器的资源
3、定义HTTP协议的服务器连接对象,用来进行客户端与服务器端的连接。
4、配置HttpURLConnection对象
4.1通过资源定位符链接服务器
// 客户端与服务器端通信的HttpsURLConnection
httpUrlConnection = (HttpURLConnection) url
.openConnection();
4.2设置网络链接超时时间
// 设置网络链接超时时间3秒
httpUrlConnection.setConnectTimeout(3000);
4.3打开输入流用输入流来读取服务器里的资源
// 打开输入流
httpUrlConnection.setDoInput(true);
4.4设置客户端请求方式
//设置本次请求的的方式是get资源添加到URL后面可见采用编码方式显示
httpUrlConnection.setRequestMethod("GET");
4.5判断是否成功连接到服务器,有服务器返回给客户端的标识码判断
//判断是否成功访问服务器由服务器返回给客户端的状态码判断
int requetCode=httpUrlConnection.getResponseCode();
4.6若访问成功则用输入流从服务器上读取数据
if(requetCode==200)
{
//访问成功,从服务器上读取数据用输入流读
inputStream=httpUrlConnection.getInputStream();
}
用到流一般考虑要关闭!!!
public class HttpGet {
// 定义资源所在的位置(协议名+服务器名+资源)
private static final String PATH_URL = "http://192.168.56.1:8080/myhttp/yqq.png";
public HttpGet() {
// TODO Auto-generated constructor stub
}
public static void saveToDisk()
{
FileOutputStream os=null;
//流写入本地的位置
File file=new File("E:\\yqq.png");
try {
os=new FileOutputStream(file);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
InputStream inputStream=myGetInputStream();
//数据长度
int len=0;
//数据缓冲
byte[] buffer=new byte[1024];
try {
while((len=inputStream.read(buffer))!=-1)
{
os.write(buffer,0,len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(os!=null)
{//关闭流
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static InputStream myGetInputStream() {
InputStream inputStream = null;
HttpURLConnection httpUrlConnection = null;
// 定义统一资源定位符
try {
URL url = new URL(PATH_URL);
if (url != null) {
try {
// 客户端与服务器端通信的HttpsURLConnection
httpUrlConnection = (HttpURLConnection) url
.openConnection();
// 设置网络链接超时时间3秒
httpUrlConnection.setConnectTimeout(3000);
// 打开输入流
httpUrlConnection.setDoInput(true);
//设置本次请求的的方式是get资源添加到URL后面可见采用编码方式显示
httpUrlConnection.setRequestMethod("GET");
//判断是否成功访问服务器由服务器返回给客户端的状态码判断
int requetCode=httpUrlConnection.getResponseCode();
if(requetCode==200)
{
//访问成功,从服务器上读取数据用输入流读
inputStream=httpUrlConnection.getInputStream();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return inputStream;
}
public static void main(String[] args)
{
saveToDisk();
}
}