android 的网络层,其实就是 j2se 的网络层操作
方法就是,将j2se 的 mian 方法的业务 逻辑,放到 android 的 service 包中 ,建立service 类处理
网络操作 一般都是 input流,output流
从input流中 读到 byte[] data 数组,将byte[]data 按需要 变成相应的 文件 或者 String 类型
J2se 下 的一个 读取 图片 程序
package com.readpic;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
public class ImageRequest {
public static void main (String[] args){
try {
URL url = new URL("http://img.bimg.126.net/photo/yuQusUZdCYJpjpKT4WRmKA==/1408500783460964413.jpg");
HttpURLConnection conn =(HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5*1000);
InputStream inStream = conn.getInputStream(); //通过输入流获取 图片数据
byte[] data = readInputStream(inStream);// 得到图片的 二进制数据
File imageFile = new File("itcast.jpg");
FileOutputStream outStream =new FileOutputStream(imageFile);
outStream.write(data);
outStream.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
* 读入二进制 数据
*/
public static byte[] readInputStream (InputStream inStream) throws IOException {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte [1024];
int len =0;
while ((len=inStream.read(buffer))!= -1){
outStream.write(buffer,0,len);
}
inStream.close();
return outStream.toByteArray();
}
}
这么做就会 在项目文件夹中 读到一个 图片
2.将业务逻辑移植到 android中
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/urlpath" />
<EditText
android:id="@+id/urlpath"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="http://img.bimg.126.net/photo/yuQusUZdCYJpjpKT4WRmKA==/1408500783460964413.jpg" />
<Button
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button"
/>
<ImageView
android:id="@+id/imageview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/urlpath" />
</LinearLayout>
建立 工具包 unitl
放入专门 读入二进制文件代码
package com.zgd.utils;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class StreamTool {
/*
* 读入二进制 数据
*/
public static byte[] readInputStream (InputStream inStream) throws IOException {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte [1024];
int len =0;
while ((len=inStream.read(buffer))!= -1){
outStream.write(buffer,0,len);
}
inStream.close();
return outStream.toByteArray();
}
}
service包
package com.zgd.service;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.zgd.utils.StreamTool;
public class ImageService {
public static byte[] GetImage(String path) throws IOException {
URL url = new URL("http://img.bimg.126.net/photo/yuQusUZdCYJpjpKT4WRmKA==/1408500783460964413.jpg");
HttpURLConnection conn =(HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5*1000);
InputStream inStream = conn.getInputStream(); //通过输入流获取 图片数据
return StreamTool.readInputStream(inStream);
}
}
Activity包
package com.zgd;
import java.io.IOException;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.zgd.service.ImageService;
public class ImageViewActivity extends Activity {
private EditText pathText;
private ImageView imageView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pathText = (EditText) this.findViewById(R.id.urlpath);
imageView = (ImageView) this.findViewById(R.id.imageview);
Button bt=(Button) this.findViewById(R.id.button);
bt.setOnClickListener(new View.OnClickListener() {
String path =pathText.getText().toString();
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
byte[] data = ImageService.GetImage(path);
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);//生成位图
imageView.setImageBitmap(bitmap);//显示图片
} catch (IOException e) {
// TODO Auto-generated catch block
Toast.makeText(ImageViewActivity.this, R.string.error, 1).show();
// Log.e();
}
}
});
}
}
4. 开启 mainfiest.xml中 的权限