android的自带的httpClient 怎么上传文件

android的自带的httpClient 怎么上传文件,第1张

在Android开发中,Android SDK附带了Apache的HttpClient,它是一个完善的客户端。它提供了对HTTP协议的全面支持,可以使用HttpClient的对象来执行HTTP GET和HTTP POST调用。

HTTP工作原理:

1客户端(一般是指浏览器,这里是指自己写的程序)与服务器建立连接

2建立连接后,客户端向服务器发送请求

3服务器接收到请求后,向客户端发送响应信息

4客户端与服务器断开连接

HttpClient的一般使用步骤:

1使用DefaultHttpClient类实例化HttpClient对象

2创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。

3调用execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。

4通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。

最后记得要在AndroidManifestxml文件添加网络权限

<uses-permission android:name="androidpermissionINTERNET" />

附件中包含了一个拍照上传的源代码

今天,让 下面说说电脑和安卓手机之间的文件传输方法,看看这些你都知道吧。

1 USB数据线方法

用手机的数据线连接电脑的USB,然后在手机上设置文件传输,这样就可以互相传输了。

2蓝牙互相传输文件。首先,让 打开手机和电脑上的蓝牙功能,配对。选择蓝牙发送或接收文件,然后我们选择要发送到手机的文件,手机端点确定接收。

3利用无线局域网互传文件,记得最近两年手机可以连接WiFi和电脑互传文件,但是新系统之后就没有这个功能了。我们可以在手机上下载一个fv文件管理器,然后在文件管理器上打开一个http/ftp服务器。电脑可以通过键入您设置的URL来访问它。

4用阿里盘实现互传。我 我以前告诉过你如何把阿里磁盘变成你电脑的本地硬盘。如果可以 ,请看我之前发的文章,让我们的手机和电脑同时登录阿里盘,盘里的文件手机电脑都可以用。

你还知道哪些方法?让 让我们看看有没有更好的。

王者之心2点击试玩

我会啊,我是去年开始使用百度云的,接触比较多,还在了解一点,现在我来教教你如何使用

一、 账号注册

百度网盘是一个非常实用的网络存储平台,没有账号的可以先自己注册一个。打开百度网盘官网  。点击注册,根据提示信息完善手机号,后期可以绑定微博、QQ、微信快捷登录。

二、文件下载

1 点击发你的下载链接,输入提取码,然后点击提取文件。

2 点击下载即可下载。如果提示文件过大,可以点击保存到自己的网盘空间,然后使用客户端下载。

3 如果没有客户端,那就下载一个装上吧。装好后输入注册的账号密码登录即可下载。

百度网盘是百度推出的一项云存储服务,首次注册即有机会获得15GB的空间,目前有Web版、Windows客户端、Android手机客户端,用户将可以轻松把自己的文件上传到网盘上,并可以跨终端随时随地查看和分享。

// 首先组拼文本类型的参数

StringBuilder sb = new StringBuilder();

for (MapEntry<String, String> entry : paramsentrySet()) {

sbappend(PREFIX);

sbappend(BOUNDARY);

sbappend(LINEND);

sbappend("Content-Disposition: form-data; name=\""

+ entrygetKey() + "\"" + LINEND);

sbappend("Content-Type: text/plain; charset=" + CHARSET + LINEND);

sbappend("Content-Transfer-Encoding: 8bit" + LINEND);

sbappend(LINEND);

sbappend(entrygetValue());

sbappend(LINEND);

}

DataOutputStream outStream = new DataOutputStream(

conngetOutputStream());

outStreamwrite(sbtoString()getBytes());

一、注意编码方式。同为MP4格式的视频,它的编码方式有多种:divx、xvid、h264等等。可以分别试一下,通常网页支持的是xvid。二是注意视频分辨率。不能高了,否则不能播放。通常用320240试试。三是注意视频的码率(比特率),不能高了,否则不能播放。通常用500K左右就可以了。以上三个参数,在转换成MP4时,可以设置。建议用格式工厂来转换。在转换时,点开输出配置,就可以设置具体的参数了。

我是这样做的

Intent intent = new Intent(IntentACTION_GET_CONTENT);

intentsetType("/");

intentaddCategory(IntentCATEGORY_OPENABLE);

startActivityForResult(IntentcreateChooser(intent, "请选择一个要上传的文件"), 1);

然后选择文件后调用

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (resultCode == ActivityRESULT_OK) {

Uri uri = datagetData();

String url= uritoString();

获得路径,根据路径调用

public String convertCodeAndGetText(String str_filepath) {// 转码\

try {

File file1 = new File(str_filepath);

file_name = file1getName();

FileInputStream in = new FileInputStream(file1);

byte[] buffer = new byte[(int) file1length() + 100];

int length = inread(buffer);

load = Base64encodeToString(buffer, 0, length,

Base64DEFAULT);

inclose();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

return load;

}

对文件进行编码

  首先是拍照:使用Intent即可,

  [java] view plaincopyprint

  01final String start = EnvironmentgetExternalStorageState();

  02private static final String PHOTOPATH = "/photo/";

  03

  04if(startequals(EnvironmentMEDIA_MOUNTED)){

  05Intent intent = new Intent(MediaStoreACTION_IMAGE_CAPTURE);

  06File file = new File(EnvironmentgetExternalStorageDirectory()+PHOTOPATH);

  07if(!fileexists()){

  08filemkdirs();

  09}

  10tempphontname = SystemcurrentTimeMillis()+"jpg";

  11bufferappend(EnvironmentgetExternalStorageDirectory()+PHOTOPATH)append(tempphontname);

  12intentputExtra(MediaStoreEXTRA_OUTPUT, UrifromFile(new File(buffertoString())));

  13startActivityForResult(intent, 1);

  14}

  final String start = EnvironmentgetExternalStorageState();

  private static final String PHOTOPATH = "/photo/";

  if(startequals(EnvironmentMEDIA_MOUNTED)){

  Intent intent = new Intent(MediaStoreACTION_IMAGE_CAPTURE);

  File file = new File(EnvironmentgetExternalStorageDirectory()+PHOTOPATH);

  if(!fileexists()){

  filemkdirs();

  }

  tempphontname = SystemcurrentTimeMillis()+"jpg";

  bufferappend(EnvironmentgetExternalStorageDirectory()+PHOTOPATH)append(tempphontname);

  intentputExtra(MediaStoreEXTRA_OUTPUT, UrifromFile(new File(buffertoString())));

  startActivityForResult(intent, 1);

  }

  

  

  其次是从本地相册选:依旧是Intent

  如下代码:

  [java] view plaincopyprint

  01if(startequals(EnvironmentMEDIA_MOUNTED)){

  02 Intent getImage = new Intent(IntentACTION_GET_CONTENT);

  03 getImageaddCategory(IntentCATEGORY_OPENABLE);

  04 getImagesetType("image/jpeg");

  05 startActivityForResult(getImage, 0);

  06}

  if(startequals(EnvironmentMEDIA_MOUNTED)){

  Intent getImage = new Intent(IntentACTION_GET_CONTENT);

  getImageaddCategory(IntentCATEGORY_OPENABLE);

  getImagesetType("image/jpeg");

  startActivityForResult(getImage, 0);

  }

  接下来是主要的:因为调用完系统的方法后,回返回到回调方法onActivityResult(int, int, Intent)中,

  在里面进行主要的照片上传服务器的操作,

  见代码:

  [java] view plaincopyprint

  01@Override

  02 protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  03 ContentResolver resolver = getContentResolver();

  04 if(requestCode==1)//

  05 {

  06 if(resultCode==ActivityRESULT_OK)

  07 {

  08 if(EnvironmentgetExternalStorageState()equals(EnvironmentMEDIA_MOUNTED))

  09 {

  10ew Thread(new Runnable()

  11 {

  12 @Override

  13 public void run() {

  14//进行上传操作

  15}

  16}start();

转载

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » android的自带的httpClient 怎么上传文件

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情