package com.maidong.utils;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HTTP;
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class InternetUtils {
private static final String USER_AGENT = "User-Agent";
public static String httpPost(String url, List<NameValuePair> nameValuePairs) throws ClientProtocolException, IOException {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
// List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
// Your DATA
// nameValuePairs.add(new BasicNameValuePair("id", "12345"));
// nameValuePairs.add(new BasicNameValuePair("stringdata",
// "eoeAndroid.com is Cool!"));
httpPost.setHeader(USER_AGENT, "Mozilla/4.5");
HttpEntity httpEntity = null;
try {
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));
httpEntity = httpclient.execute(httpPost).getEntity();
} finally {
//httpPost.abort();
}
return retrieveHttpEntity(httpEntity);
}
public static InputStream download(URL url) throws IOException {
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
return is;
}
public static byte[] downloadFileData(String surl) throws IOException {
URL url = new URL(surl);
URLConnection conn = url.openConnection();
// 获取长度
int length = (int) conn.getContentLength();
InputStream is = conn.getInputStream();
byte[] imgData = null;
if (length != -1) {
imgData = new byte[length];
byte[] temp = new byte[512];
int readLen = 0;
int destPos = 0;
while ((readLen = is.read(temp)) > 0) {
System.arraycopy(temp, 0, imgData, destPos, readLen);
destPos += readLen;
}
}
return imgData;
}
public static InputStream download(String url) throws IOException {
return download(new URL(url));
}
public static String httpPost(String url) throws ClientProtocolException, IOException {
return httpPost(url, new ArrayList<NameValuePair>());
}
private static String retrieveHttpEntity(HttpEntity httpEntity) throws UnsupportedEncodingException, IllegalStateException,
IOException {
StringBuffer stringBuffer = new StringBuffer();
InputStreamReader is = new InputStreamReader(httpEntity.getContent(), HTTP.UTF_8);
BufferedReader bufferedReader = new BufferedReader(is);
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuffer.append(line);
}
return stringBuffer.toString();
}
public static String uploadFile(String actionUrl, String newName, InputStream fStream) {
String end = "\r\n";
String twoHyphens = "--";
String boundary = java.util.UUID.randomUUID().toString();
DataOutputStream ds = null;
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 */
ds = new DataOutputStream(con.getOutputStream());
ds.writeBytes(twoHyphens + boundary + end);
ds.writeBytes("Content-Disposition: form-data; " + "name=\"Filedata\";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);
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());
return b.toString().trim();
/* 关闭DataOutputStream */
} catch (Exception e) {
// showDialog("" + e);
} finally {
AppUtils.close(ds);
AppUtils.close(fStream);
}
return null;
}
/**
*
* @param s
* @return null if the given string is null.
* @throws UnsupportedEncodingException
*/
public static String decode(String s, String enc) throws UnsupportedEncodingException {
return s == null ? null : URLDecoder.decode(s, enc);
}
public static String encode(String s, String enc) throws UnsupportedEncodingException {
return URLEncoder.encode((s == null ? "" : s), enc);
}
/**
*
* 判断网络状态是否可用
*
* @return true: 网络可用 ; false: 网络不可用
*/
public static boolean isNetworkConnected(Activity activity) {
ConnectivityManager conManager = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = conManager.getActiveNetworkInfo();
if (networkInfo != null) { // 这个判断一定要,要不然会出错
return networkInfo.isAvailable();
}
return false;
}
}
分享到:
相关推荐
在Android平台上进行网络操作是应用程序开发中的重要环节,它允许应用与远程服务器进行数据交互,如获取用户信息、上传下载文件、同步数据等。本文将深入探讨“Android网络操作”的核心概念、常用方法以及如何利用...
Android系统出于安全考虑,不允许在主线程中执行网络操作,因此我们需要使用异步任务(AsyncTask)或者使用Android提供的 Volley、Retrofit 等网络库来在后台线程进行网络请求。 1. **网络请求基础**: - 使用`...
通过分析这些源码,开发者可以学习到实际项目中文件上传下载的最佳实践,理解网络通信、多线程、文件操作等关键知识点,并且可以参考代码结构和设计模式优化自己的项目。 总之,这个资源为Android开发者提供了宝贵...
总结,Android执行网络操作是一个涵盖广泛的主题,涉及网络请求、权限管理、数据解析等多个方面。开发者需要根据实际需求选择合适的网络库、实现异步操作,并关注性能和安全性。"NetworkUsage"资源可能提供了具体...
综上所述,Android上传图片至网络端是一个涉及多个技术点的过程,需要综合运用网络请求库、数据编码技术、多线程处理、错误处理机制以及用户体验设计等知识。理解并熟练掌握这些技能,对于开发高效、稳定的Android...
综上所述,"Android 网络类型及操作相关demo"涵盖了Android设备网络状态的检测、WiFi管理、网络类型判断以及网络状态监听等多个关键点,是学习和实践Android网络编程的宝贵资源。开发者可以通过这个Demo深入了解如何...
在Android平台上,实现上传和下载特效是提升用户体验的重要一环,尤其对于文件传输类的应用来说。...总的来说,Android上传下载特效的实现涉及网络通信、文件管理、UI设计等多个方面,需要综合考虑技术实现与用户体验。
本篇将详细介绍一个基于Android平台的网络文件上传下载源码实例,包括如何搭建用户界面、实现文件上传下载的核心逻辑以及必要的权限配置等。 #### 二、用户界面设计 用户界面是应用程序与用户交互的第一线,良好的...
总结,Android文件上传下载示例代码涵盖了网络请求库的使用、文件操作、进度监控、错误处理等多个关键知识点,为开发者提供了实现类似功能的基础。通过理解并运用这些知识点,开发者可以构建出稳定且用户体验良好的...
总的来说,Android文件上传下载涉及音频录制、图片处理、HTTP请求、文件操作等多个方面。开发者需要理解这些基础知识,并结合具体需求选择合适的方法和技术。实践中还要注意内存管理、权限申请、错误处理等问题,以...
总的来说,这个"Android网络工具类 包含文件上传 下载"是一个实用的开发资源,能够简化Android应用中的网络操作,特别是对于文件传输需求,可以大大提高开发效率并保证代码的整洁性。通过理解和使用`NetClient.java`...
本篇将详细讲解如何在Android应用中使用Socket进行文件的上传和下载操作。 首先,理解Socket的基本概念:Socket是应用程序与网络协议之间的接口,它允许两个网络应用程序通过TCP/IP协议进行通信。在Android中,我们...
以上就是关于"android文件上传下载源码"的相关知识点,这些内容涵盖了Android文件操作、网络请求、异步处理等多个方面,对于提升Android应用的文件管理能力具有重要指导价值。实际开发中,根据具体需求和场景,...
总之,Android的文件上传和下载涉及网络请求、多线程、数据解析等多个方面,开发者需要对这些技术有深入理解才能实现稳定、高效的文件交互功能。通过学习和实践,你将能够熟练地在Android应用中实现文件的上传下载,...
在Android平台上实现SFTP(Secure File Transfer Protocol,安全文件传输协议)上传和下载功能,是移动应用中处理远程文件操作的常见需求。SFTP是一种基于SSH的安全文件传输协议,它提供了在不安全网络环境中安全...
- 在Android应用中,可以设计一个简洁易用的界面,展示上传和下载进度条,提供开始、暂停、取消等操作按钮。 综上所述,"android ftp上传下载"项目涉及了Android应用如何利用第三方库进行FTP文件交互,以及在...
在Android开发中,上传和下载是常见的网络操作,尤其在移动应用中,用户可能需要将本地数据上传到服务器,或者从服务器下载文件。本源码着重解决了两个关键问题:断点续传和优化手机内存使用。 断点续传是一项重要...
本文将详细介绍如何在Android Studio 3.5.1环境下,集成七牛云SDK(版本7.5.0),实现图片、视频等文件的上传和下载功能。 首先,集成七牛云SDK是实现功能的第一步。在项目的build.gradle模块文件中,添加七牛...
【Android网络测速App源代码】是一个专门为Android平台设计的应用程序,用于测试设备的网络速度,包括上传和下载的速度。这个App不仅提供了基本的测速功能,还具有记录查询和结果保存到TXT文件的能力,同时结合了...
Android网络请求框架提供了方便的方式来执行这些操作,避免了直接使用底层Socket编程的复杂性。 二、Android网络请求的基础 1. HttpURLConnection:Android SDK自带的一种网络请求方式,适用于简单的HTTP请求。它...