【android初级】之Android之从网络上获取数据(图片,网页,xml,json等)

简介: 1>从网络上获取数据(图片,网页,xml,json等) A.从网络上获取一张图片,然后显示到手机上这是在java中public class ImageRequest { /**  * @param args  */ public sta...

1>从网络上获取数据(图片,网页,xml,json等)
 
A.从网络上获取一张图片,然后显示到手机上
这是在java中

public class ImageRequest {

 /**
  * @param args
  */
 public static void main(String[] args) throws Exception {
  URL url = new URL("http://i3.itc.cn/20100707/76c_0969b700_d5b4_41cd_8243_9b486be92cc4_0.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();
 }

 public static byte[] readInputStream(InputStream inStream) throws Exception{
  ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  byte[] buffer = new byte[1024];//定义一个1k的缓冲区
  int len = 0;
  while( (len=inStream.read(buffer)) != -1 ){//返回的是实际的字节数
   outStream.write(buffer, 0, len);//将缓冲区的数据写入到内存中
  }
  inStream.close();
  return outStream.toByteArray();
 }
}

在手机上
 button.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    String path = pathText.getText().toString();
    try {
     byte[] data = ImageService.getImage(path);
     Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);//生成位图
     imageView.setImageBitmap(bitmap);//显示图片     
    } catch (Exception e) {
     Toast.makeText(ImageShowActivity.this, R.string.error, 1).show();
     Log.e(TAG, e.toString());
    }
   }});
<!-- 访问网络的权限 -->
<uses-permission android:name="android.permission.INTERNET"/>


public class StreamTool {

 /**
  * 从输入流中获取数据
  * @param inStream 输入流
  * @return
  * @throws Exception
  */
 public static byte[] readInputStream(InputStream inStream) throws Exception{
  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();
 }
}
-----------------------------------------------------------------------------------------------------
public class ImageService {
 
 public static byte[] getImage(String path) throws Exception {
  URL url = new URL("http://i3.itc.cn/20100707/76c_0969b700_d5b4_41cd_8243_9b486be92cc4_0.jpg");
  HttpURLConnection conn = (HttpURLConnection)url.openConnection();
  conn.setRequestMethod("GET");
  conn.setConnectTimeout(5 * 1000);
  InputStream inStream = conn.getInputStream();//通过输入流获取图片数据
  return StreamTool.readInputStream(inStream);//得到图片的二进制数据
 }

}
B.从网络上获取网页(用的比较少)
byte[] data = readInputStream(inStream);//得到网页的二进制数据
String html = new String(data,"gb2312");


C.从网络上获取xml数据,然后显示在手机上
 android手机模拟器本身绑定在模拟器上,所以访问web service的时候不能用local host
 或者用127.0.0.1。而应该使用局域网上的ip地址。
public class VideoService {
 /**
  * 获取最新的视频资讯
  * @return
  * @throws Exception
  */
 public static List<Video> getLastVideos() throws Exception{
  String path = "http://192.168.1.100:8080/videoweb/video/list.do";
  URL url = new URL(path);
  HttpURLConnection conn = (HttpURLConnection)url.openConnection();
  conn.setReadTimeout(5*1000);
  conn.setRequestMethod("GET");
  InputStream inStream = conn.getInputStream();
  return parseXML(inStream);
 }
/**
  * 解析服务器返回的协议,得到视频资讯
  * @param inStream
  * @return
  * @throws Exception
  */
 private static List<Video> parseXML(InputStream inStream) throws Exception{
  List<Video> videos = null;
  Video video = null;
  XmlPullParser parser = Xml.newPullParser();
  parser.setInput(inStream, "UTF-8");
  int eventType = parser.getEventType();//产生第一个事件
  while(eventType!=XmlPullParser.END_DOCUMENT){//只要不是文档结束事件
   switch (eventType) {
   case XmlPullParser.START_DOCUMENT:
    videos = new ArrayList<Video>();
    break;
 
   case XmlPullParser.START_TAG:
    String name = parser.getName();//获取解析器当前指向的元素的名称
    if("video".equals(name)){
     video = new Video();
     video.setId(new Integer(parser.getAttributeValue(0)));
    }
    if(video!=null){
     if("title".equals(name)){
      video.setTitle(parser.nextText());//获取解析器当前指向元素的下一个文本节点的值
     }
     if("timelength".equals(name)){
      video.setTime(new Integer(parser.nextText()));
     }
    }
    break;
    
   case XmlPullParser.END_TAG:
    if("video".equals(parser.getName())){
     videos.add(video);
     video = null;
    }
    break;
   }
   eventType = parser.next();
  }
  return videos;
 }
}

D.从网络上获取json数据,然后显示在手机上

public class VideoService {
 /**
  * 获取最新的视频资讯
  * @return
  * @throws Exception
  */
 
 public static List<Video> getJSONLastVideos() throws Exception{
  List<Video> videos = new ArrayList<Video>();
  String path = " http://192.168.1.100:8080/videoweb/video/list.do?format=json";
  URL url = new URL(path);
  HttpURLConnection conn = (HttpURLConnection)url.openConnection();
  conn.setReadTimeout(5*1000);
  conn.setRequestMethod("GET");
  InputStream inStream = conn.getInputStream();
  byte[] data = StreamTool.readInputStream(inStream);
  String json = new String(data);
  JSONArray array = new JSONArray(json);
  for(int i=0 ; i < array.length() ; i++){
   JSONObject item = array.getJSONObject(i);
   int id = item.getInt("id");
   String title = item.getString("title");
   int timelength = item.getInt("timelength");
   videos.add(new Video(id, title, timelength));
  }
  return videos;
 }
 
}
相关文章
|
机器学习/深度学习 JSON 监控
淘宝拍立淘按图搜索与商品详情API的JSON数据返回详解
通过调用taobao.item.get接口,获取商品标题、价格、销量、SKU、图片、属性、促销信息等全量数据。
|
11月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
11月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
JSON 缓存 自然语言处理
多语言实时数据微店商品详情API:技术实现与JSON数据解析指南
通过以上技术实现与解析指南,开发者可高效构建支持多语言的实时商品详情系统,满足全球化电商场景需求。
|
11月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
745 0
|
JSON API 数据格式
干货满满!淘宝商品详情数据,淘宝API(json数据返回)
淘宝商品详情 API 接口(如 taobao.item.get)的 JSON 数据返回示例如下
|
11月前
|
JSON 中间件 Java
【GoGin】(3)Gin的数据渲染和中间件的使用:数据渲染、返回JSON、浅.JSON()源码、中间件、Next()方法
我们在正常注册中间件时,会打断原有的运行流程,但是你可以在中间件函数内部添加Next()方法,这样可以让原有的运行流程继续执行,当原有的运行流程结束后再回来执行中间件内部的内容。​ c.Writer.WriteHeaderNow()还会写入文本流中。可以看到使用next后,正常执行流程中并没有获得到中间件设置的值。接口还提供了一个可以修改ContentType的方法。判断了传入的状态码是否符合正确的状态码,并返回。在内部封装时,只是标注了不同的render类型。再看一下其他返回的类型;
499 3
|
11月前
|
JSON Java Go
【GoGin】(2)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
bind或bindXXX函数(后文中我们统一都叫bind函数)的作用就是将,以方便后续业务逻辑的处理。
563 3
|
11月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
573 1

热门文章

最新文章