`
androidyo
  • 浏览: 64653 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android网络连接总结

阅读更多
一:HttpURLConnection

URL sourceUrl;
String fileName ="";
		
		try {
			sourceUrl = new URL("网址");
			fileName = sourceUrl.getFile();
			fileName = fileName.substring(fileName.lastIndexOf('/') + 1);			
			fileName = "/sdcard/"+(new Date()).getTime()+fileName;
             /*创建临时文件
                File myTempFile = File.createTempFile("temfile",                                 "."+"mp3");//文件扩展名
         记录临时文件名
        currentTempFilePath = myTempFile.getAbsolutePath();
              */
			FileOutputStream fos = new FileOutputStream(fileName);
			int read = 0;
			byte[] buffer = new byte[512];
			
			HttpURLConnection conn = (HttpURLConnection) sourceUrl.openConnection();
			conn.setDoInput(true);
			conn.connect();
			int length = conn.getContentLength();
			
			InputStream is = conn.getInputStream();
			
			do{
			     read = is.read(buffer);
			     if(read > 0){
			          fos.write(buffer, 0, read);			         
			     }
			}while(read != -1);
			
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();			
			return;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();		
			return;
		}
		if(fileName !=""){
			File file = new File(fileName);
		    if (file.exists()){				    	
		    	//根据filename,操作这个文件
		    }
		}



 URL imageUrl = null;
    Bitmap bitmap = null;
    try
    {
      /* new URL对象将网址传入 */
      imageUrl = new URL(uriPic);
    }
    catch (MalformedURLException e)
    {
      e.printStackTrace();
    }
    try
    {
      /* 取得连接 */
      HttpURLConnection conn = (HttpURLConnection) imageUrl
          .openConnection();
      conn.connect();
      /* 取得返回的InputStream */
      InputStream is = conn.getInputStream();
      mTextView1.setText(conn.getResponseCode()+"="+conn.getResponseMessage());
      /* 将InputStream变成Bitmap */
      bitmap = BitmapFactory.decodeStream(is);
      /* 关闭InputStream */
      is.close();
    }
    catch (IOException e)
    {
      e.printStackTrace();
    }

处理文字数据
/* 将InputStream转成Reader */
      BufferedReader in = new BufferedReader(new InputStreamReader(
          conn.getInputStream()));
      String inputLine;
      /* 图文件路径 */
      String uriPic = "";
      /* 一行一行读取 */
      while ((inputLine = in.readLine()) != null)
      {
        uriPic += inputLine;
      }



URLConnection 获取图片
 
        URL aryURI = new URL(myImageURL[position]);
        
        URLConnection conn = aryURI.openConnection();
        conn.connect();
       
        InputStream is = conn.getInputStream();
       
        Bitmap bm = BitmapFactory.decodeStream(is);
      
        is.close();
    
        imageView.setImageBitmap(bm);

注:URL可以直接InputStream is = URL.openStream();

XML 的应用

URL url = new URL(ConstData.queryString+cityParamString);
					
					SAXParserFactory spf = SAXParserFactory.newInstance(); 
                    SAXParser sp = spf.newSAXParser(); 

                    
                    XMLReader xr = sp.getXMLReader();
                    
                    myHandler gwh = new myHandler(); 
                    xr.setContentHandler(gwh); 

                    InputStreamReader isr =new InputStreamReader(url.openStream(),"GBK");
                    InputSource is=new InputSource(isr);
                    
                    xr.parse(is);



向服务器上传文件

private void uploadFile()
  {
    String end = "\r\n";
    String twoHyphens = "--";
    String boundary = "*****";
    try
    {
      URL url =new URL(actionUrl);
      HttpURLConnection con=(HttpURLConnection)url.openConnection();
      /* 允许Input、Output,不使用Cache */
      con.setDoInput(true);
      con.setDoOutput(true);
      con.setUseCaches(false);
      /* 设置传送的method=POST */
      con.setRequestMethod("POST");
      /* setRequestProperty */
      con.setRequestProperty("Connection", "Keep-Alive");
      con.setRequestProperty("Charset", "UTF-8");
      con.setRequestProperty("Content-Type",
                         "multipart/form-data;boundary="+boundary);
      /* 设置DataOutputStream */
      DataOutputStream ds = 
        new DataOutputStream(con.getOutputStream());
      ds.writeBytes(twoHyphens + boundary + end);
      ds.writeBytes("Content-Disposition: form-data; " +
                    "name=\"file1\";filename=\"" +
                    newName +"\"" + end);
      ds.writeBytes(end);   

      /* 取得文件的FileInputStream */
      FileInputStream fStream = new FileInputStream(uploadFile);
      /* 设置每次写入1024bytes */
      int bufferSize = 1024;
      byte[] buffer = new byte[bufferSize];

      int length = -1;
      /* 从文件读取数据至缓冲区 */
      while((length = fStream.read(buffer)) != -1)
      {
        /* 将资料写入DataOutputStream中 */
        ds.write(buffer, 0, length);
      }
      ds.writeBytes(end);
      ds.writeBytes(twoHyphens + boundary + twoHyphens + end);

      /* close streams */
      fStream.close();
      ds.flush();

      /* 取得Response内容 */
      InputStream is = con.getInputStream();
      int ch;
      StringBuffer b =new StringBuffer();
      while( ( ch = is.read() ) != -1 )
      {
        b.append( (char)ch );
      }
      /* 将Response显示于Dialog */
      showDialog(b.toString().trim());
      /* 关闭DataOutputStream */
      ds.close();
    }
    catch(Exception e)
    {
      showDialog(""+e);
    }
  }


DefaultHttpClient
用户登录验证

 /* 账号:david */
    /* 密码:1234 */
    String uriAPI = "http://www.dubblogs.cc:8751/Android/Test/API/TestLogin/index.php";
    String strRet = "";
    
    try
    {
      DefaultHttpClient httpclient = new DefaultHttpClient();
      HttpResponse response;
      HttpPost httpost = new HttpPost(uriAPI);
      List <NameValuePair> nvps = new ArrayList <NameValuePair>();
      nvps.add(new BasicNameValuePair("uid", strUID)); 
      nvps.add(new BasicNameValuePair("upw", strUPW)); 
      
      httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
      
      response = httpclient.execute(httpost);
      HttpEntity entity = response.getEntity();
      //entity = response.getEntity();
      
      Log.d(TAG, "HTTP POST getStatusLine: " + response.getStatusLine());
      
      /* HTML POST response BODY */
      strRet = EntityUtils.toString(entity);
      Log.i(TAG, strRet);
      strRet = strRet.trim().toLowerCase();
      
      List<Cookie> cookies = httpclient.getCookieStore().getCookies();
      if (entity != null)
      {
        entity.consumeContent();
      }
      
      Log.d(TAG, "HTTP POST Initialize of cookies."); 
      cookies = httpclient.getCookieStore().getCookies(); 
      if (cookies.isEmpty())
      {
        Log.d(TAG, "HTTP POST Cookie not found.");
        Log.i(TAG, entity.toString());
      }
      else
      {
        for (int i = 0; i < cookies.size(); i++)
        {
          Log.d(TAG, "HTTP POST Found Cookie: " + cookies.get(i).toString()); 
        } 
      }
      
      
      if(strRet.equals("y"))
      {
        Log.i("TEST", "YES");
        return true;
      }
      else
      {
        Log.i("TEST", "NO");
        return false;
      }
    }
    catch(Exception e)
    {
      e.printStackTrace();
      return false;
    }

未完待续
分享到:
评论
1 楼 endual 2012-07-13  
大哥,您好歹第一句话说:记得配置android连接网络的权限哦

相关推荐

    Android 判断网络连接

    总结起来,Android应用程序在进行网络通信前,需要检查网络连接状态并适当地处理无网络的情况。这包括申请权限、使用`ConnectivityManager`检测网络状态、创建并显示提示对话框,以及使用`Intent`引导用户进入设置...

    Android网络连接检查

    总结来说,Android网络连接检查涉及多个层次,包括基本的网络连接状态检测、网络类型的判断,以及在不同Android版本下的适应性处理。同时,根据应用需求,还可以结合`BroadcastReceiver`、`WorkManager`或`Job...

    获取网络连接状态实例demo

    总结来说,获取Android设备的网络连接状态主要涉及到`ConnectivityManager`和`NetworkInfo`这两个关键类。通过它们提供的API,我们可以轻松地检查设备的网络状态,并据此做出相应的业务逻辑决策。在实际项目中,还...

    Android开发之系统信息【3】——获取Android网络连接信息

    总结起来,获取Android网络连接信息是Android开发中一个基础但关键的部分。通过`ConnectivityManager`和`NetworkInfo`类,开发者能够全面了解设备的网络状况,从而更好地控制和优化应用程序的网络行为。在实际开发中...

    Android-Android监听网络变化判断网络连接类型网络制式等工具类

    总结,Android中的网络状态管理和检测是通过BroadcastReceiver监听网络变化,ConnectivityManager查询网络连接类型,以及TelephonyManager获取网络制式来实现的。NetUtil工具类的引入则为开发者提供了一种简洁的接口...

    安卓Android源码——网络连接状态检测.rar

    1. **Android网络连接状态检查基础** 在Android中,我们通常通过`ConnectivityManager`系统服务来检查网络连接状态。`ConnectivityManager`提供了网络连接的信息,包括移动网络、Wi-Fi等。首先,我们需要在...

    Android数据连接流程分析

    在Android中,数据连接主要包括三个部分:UI层、MobileDataService层以及底层的网络服务。其中,UI层主要负责接收用户的操作指令,并将这些指令传递给MobileDataService层;MobileDataService层则负责处理来自UI层的...

    Android Wifi连接demo

    在Android平台上,开发一款应用程序来处理Wi-Fi连接是一项常见的任务,尤其对于那些需要稳定网络连接的App来说。本文将深入探讨“Android Wi-Fi连接demo”所涉及的关键知识点,包括Wi-Fi模块的使用、接口封装、密码...

    android 网络编程简介

    这在某些场景下,比如在需要更高带宽或者更稳定的网络连接时,就显得尤为重要。文中提到的是在企业桌面IP电话这样的嵌入式设备上添加以太网连接功能,这类设备与普通Android设备相比有其特殊性。 3. Android开源...

    android检测网络连接是否存在.txt

    根据提供的文件信息,本文将详细解析如何在Android应用中检测网络连接是否可用,并对相关代码进行深入解读。网络连接状态的检测是许多Android应用程序的基本需求之一,尤其对于那些依赖于互联网服务的应用来说更是...

    Android 连接C# SQLserver

    总结来说,Android连接C# SQL Server的过程涉及Android客户端的网络请求、C# Web服务接口设计和SQL Server数据库操作。理解并掌握这些技术,能够帮助开发者构建起客户端和服务器之间的桥梁,实现数据的高效交互。

    Android网络连接2——HttpURLConnection

    在Android应用开发中,网络连接是必不可少的一部分,用于获取服务器数据、更新应用内容或与远程服务交互。在本文中,我们将深入探讨`HttpURLConnection`,它是Android系统中用于HTTP通信的一种标准API。`...

    android客户端连接服务器交互实例

    1. HttpURLConnection:这是Android SDK内置的网络连接类,可以实现基本的HTTP请求。使用HttpURLConnection,你需要创建URL对象,打开连接,设置请求方法(GET或POST),设置请求头,写入请求体(如果为POST),然后...

    android 腾讯定位并判断网络连接

    总结来说,Android应用中使用腾讯定位服务并判断网络连接,主要涉及以下步骤: 1. 添加权限声明 2. 引入腾讯定位SDK 3. 初始化定位服务和设置监听器 4. 检查网络连接状态 5. 设置定位模式 6. 实时监控定位状态 7. ...

    自用Android长连接

    3. 使用KeepAlive机制在设备休眠时保持网络连接。 4. 使用ConnectionPool管理多个连接,提高效率。 5. 考虑使用NIO(非阻塞I/O)或Netty等高性能网络库。 总结,"自用Android长连接"项目涉及到的知识点主要包括...

    android网络编程基础

    在Android平台上进行网络...总结起来,Android网络编程是通过Java网络库与远程服务器进行通信的过程,涉及请求构建、数据交换和错误处理等多个环节。了解并掌握这些基础知识对于开发功能丰富的Android应用至关重要。

    Android-MinaSocket一款基于Mina的Socket长连接库

    总结起来,`Android-MinaSocket` 是一个基于Apache Mina的Android长连接库,它提供了稳定、高效的网络通信功能,适用于需要实时数据交互的Android应用。通过使用这个库,开发者可以专注于业务逻辑,而无需过多关心...

    Android系统应用开发 实验五 网络通信 实验报告

    在Android系统应用开发中,网络通信是至关重要的一个环节,特别是在构建交互性强的应用时。...通过这样的实践,学生不仅能够了解Android网络通信的原理,还能掌握实际应用中的关键技术和最佳实践。

    连接多个BLE设备(Android)

    总结来说,创建一个连接多个BLE设备的Android应用涉及到蓝牙适配器的管理、设备扫描、连接建立、服务发现、数据接收等多个步骤。在实际开发中,还需考虑性能优化、错误处理和用户体验等因素。通过学习和实践这些知识...

    android客户端连接pc服务端

    ### Android客户端连接PC服务端知识点解析 在当前的互联网应用中,移动设备与服务器之间的通信极为常见。Android作为主流的移动操作系统之一,在实现与PC端或其他服务器的数据交互方面有着广泛的应用场景。本篇将...

Global site tag (gtag.js) - Google Analytics