Android之使用Http协议实现文件上传示例(上传MP3文件)

本文展示了如何在Android中使用Http协议上传MP3文件。通过MainActivity.java和SocketHttpRequester工具类,详细说明了上传过程,包括构建HTTP请求头、设置请求参数和文件数据,以及处理响应。
摘要由CSDN通过智能技术生成

注意一般使用Http协议上传的文件都比较小,一般是小于2M

这里示例是上传一个小的MP3文件




1.主Activity:MainActivity.java

  1. public class MainActivity extends Activity   
  2. {  
  3.     private static final String TAG = "MainActivity";  
  4.     private EditText timelengthText;  
  5.     private EditText titleText;  
  6.     private EditText videoText;  
  7.       
  8.     @Override  
  9.     public void onCreate(Bundle savedInstanceState)   
  10.     {  
  11.        super.onCreate(savedInstanceState);  
  12.        setContentView(R.layout.main);  
  13.        //提交上传按钮  
  14.        Button button = (Button) this.findViewById(R.id.button);  
  15.        timelengthText = (EditText) this.findViewById(R.id.timelength);  
  16.        videoText = (EditText) this.findViewById(R.id.video);  
  17.        titleText = (EditText) this.findViewById(R.id.title);  
  18.        button.setOnClickListener(new View.OnClickListener()   
  19.        {              
  20.             @Override  
  21.             public void onClick(View v)   
  22.             {  
  23.                 String title = titleText.getText().toString();  
  24.                 String timelength = timelengthText.getText().toString();  
  25.                 Map<String, String> params = new HashMap<String, String>();  
  26.                 params.put("method""save");  
  27.                 params.put("title", title);  
  28.                 params.put("timelength", timelength);  
  29.                 try   
  30.                 {                     
  31.                     //得到SDCard的目录  
  32.                     File uploadFile = new File(Environment.getExternalStorageDirectory(), videoText.getText().toString());  
  33.                     //上传音频文件  
  34.                     FormFile formfile = new FormFile("02.mp3", uploadFile, "video""audio/mpeg");  
  35.                     SocketHttpRequester.post("http://192.168.1.100:8080/videoweb/video/manage.do", params, formfile);  
  36.                     Toast.makeText(MainActivity.this, R.string.success, 1).show();  
  37.                 }  
  38.                 catch (Exception e)   
  39.                 {  
  40.                     Toast.makeText(MainActivity.this, R.string.error, 1).show();  
  41.                     Log.e(TAG, e.toString());  
  42.                 }  
  43.             }  
  44.         });          
  45.     }  
  46. }  
 

2.上传工具类,注意里面构造协议字符串需要根据不同的提交表单来处理

  1. public class SocketHttpRequester   
  2. {  
  3.     /** 
  4.      * 发送xml数据 
  5.      * @param path 请求地址 
  6.      * @param xml xml数据 
  7.      * @param encoding 编码 
  8.      * @return 
  9.      * @throws Exception 
  10.      */  
  11.     public static byte[] postXml(String path, String xml, String encoding) throws Exception{  
  12.         byte[] data = xml.getBytes(encoding);  
  13.         URL url = new URL(path);  
  14.         HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
  15.         conn.setRequestMethod("POST");  
  16.         conn.setDoOutput(true);  
  17.         conn.setRequestProperty("Content-Type""text/xml; charset="+ encoding);  
  18.         conn.setRequestProperty("Content-Length", String.valueOf(data.length));  
  19.         conn.setConnectTimeout(5 * 1000);  
  20.         OutputStream outStream = conn.getOutputStream();  
  21.         outStream.write(data);  
  22.         outStream.flush();  
  23.         outStream.close();  
  24.         if(conn.getResponseCode()==200){  
  25.             return readStream(conn.getInputStream());  
  26.         }  
  27.         return null;  
  28.     }  
  29.       
  30.     /** 
  31.      * 直接通过HTTP协议提交数据到服务器,实现如下面表单提交功能: 
  32.      *   <FORM METHOD=POST ACTION="http://192.168.0.200:8080/ssi/fileload/test.do" enctype="multipart/form-data"> 
  33.             <INPUT TYPE="text" NAME="name"> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值