dd_1d 2015-12-01 05:20 采纳率: 10%
浏览 1484

Android 在yeelink下载图片

一开始写了一个用socket下载数据的代码,是成功可以下载到数据了

    public String Request(String url)
    {
        String str;
        PrintWriter out = null;

        if(socket != null)
        {
            try {
                out = new PrintWriter(socket.getOutputStream());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            out.print("GET /v1.0/");
            out.print(url);
            out.print(" HTTP/1.1\r\n");
            out.print("Host:api.yeelink.net\r\n");
            out.print("Accept: */*\r\n");
            out.print("U-ApiKey:***************\r\n");          //抱歉!key不能公布,用**代替
            out.print("Content-Length:0\r\n");
            out.print("Connection: close\r\n");
            out.print("\r\n");
            out.println("print get done.\r\n");
            out.flush();

            str = Receive();
            if( ( (String)str.subSequence(9, 12) ).equals("200") )
            {
                //数据解析
            }
            else
            {
                try {
                    socket = new Socket("42.96.164.52",80);
                } catch (UnknownHostException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                str = Request(url);
            }
            return str;
        }
        return null;
    }

后来在下载图片的时候,由于不知道怎么截取到图片的数据,所以想改用HttpURLConnection进行下载,这时候就出问题了

    public static byte[] HttpReceive()
    {
        byte[] v = null;
        try {

            URL url = new URL("http://api.yeelink.net/v1.0/device/342273/sensor/379602/photo/content/2015-11-27T08:54:32");
            HttpURLConnection hc = (HttpURLConnection)url.openConnection();

            hc.setRequestMethod("GET");
            hc.setDoInput(true);
            hc.setUseCaches(false);
            hc.setInstanceFollowRedirects(true);
            hc.setRequestProperty("Host", "api.yeelink.net");
            hc.setRequestProperty("Accept", "*/*");
            hc.setRequestProperty("U-ApiKey", "******");            
            hc.setRequestProperty("Content-Length", "0");
            hc.setRequestProperty("Connection", "close");
//          hc.setRequestProperty("Content-type", "image/jpeg"); 

            hc.connect(); 
            InputStream is = hc.getInputStream();
            int streamLength = (int)is.available();
            byte[] b = new byte[streamLength];
            is.read(b, 0, streamLength);
            return b;
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return v;
    }

出现了filenotfoundexception异常

有人知道是什么原因吗

  • 写回答

5条回答 默认 最新

  • 江户川小南 2015-12-01 06:10
    关注

    你没有判断返回码,确定拿到数据了吗?都报文件找不到异常了,再检查一下吧。

    评论

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效