`
04023129
  • 浏览: 162156 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Android开发片段–POST上传和数据提交

 
阅读更多

public static String post(String actionUrl, Map<String, String> params, 
	    Map<String, File> files) throws IOException { 
	  StringBuilder sb2 = new StringBuilder(); 
	  String BOUNDARY = java.util.UUID.randomUUID().toString();
	  String PREFIX = "--" , LINEND = "\r\n";
	  String MULTIPART_FROM_DATA = "multipart/form-data"; 
	  String CHARSET = "UTF-8";

	  URL uri = new URL(actionUrl); 
	  HttpURLConnection conn = (HttpURLConnection) uri.openConnection(); 
	  conn.setReadTimeout(5 * 1000); 
	  conn.setDoInput(true);
	  conn.setDoOutput(true);
	  conn.setUseCaches(false); 
	  conn.setRequestMethod("POST"); 
	  conn.setRequestProperty("connection", "keep-alive"); 
	  conn.setRequestProperty("Charsert", "UTF-8"); 
	  conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA + ";boundary=" + BOUNDARY); 

	  StringBuilder sb = new StringBuilder(); 
	  for (Map.Entry<String, String> entry : params.entrySet()) { 
	    sb.append(PREFIX); 
	    sb.append(BOUNDARY); 
	    sb.append(LINEND); 
	    sb.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"" + LINEND);
	    sb.append("Content-Type: text/plain; charset=" + CHARSET+LINEND);
	    sb.append("Content-Transfer-Encoding: 8bit" + LINEND);
	    sb.append(LINEND);
	    sb.append(entry.getValue()); 
	    sb.append(LINEND); 
	  } 

	  DataOutputStream outStream = new DataOutputStream(conn.getOutputStream()); 
	  outStream.write(sb.toString().getBytes()); 
	  if(files!=null){
	    //int i = 0;
	    for (Map.Entry<String, File> file: files.entrySet()) { 
	      StringBuilder sb1 = new StringBuilder(); 
	      sb1.append(PREFIX); 
	      sb1.append(BOUNDARY); 
	      sb1.append(LINEND); 
	      sb1.append("Content-Disposition: form-data; name=\"file"+(i++)+"\"; filename=\""+file.getKey()+"\""+LINEND);
	      //sb1.append("Content-Disposition: form-data; name=\"userupfile\"; filename=\""+file.getKey()+"\""+LINEND);
	      sb1.append("Content-Type: application/octet-stream; charset="+CHARSET+LINEND);
	      sb1.append(LINEND);
	      outStream.write(sb1.toString().getBytes()); 

	      InputStream is = new FileInputStream(file.getValue());
	      byte[] buffer = new byte[1024]; 
	      int len = 0; 
	      while ((len = is.read(buffer)) != -1) { 
	        outStream.write(buffer, 0, len); 
	      }

	      is.close(); 
	      outStream.write(LINEND.getBytes()); 
	    } 
	  }
	  
	  byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes(); 
	  outStream.write(end_data); 
	  outStream.flush(); 

	  int res = conn.getResponseCode(); 
	  InputStream in = null;
	  if (res == 200) {
	    in = conn.getInputStream(); 
	    int ch; 
	    
	    while ((ch = in.read()) != -1) { 
	      sb2.append((char) ch); 
	    } 
	    Log.i("CAMERA", sb2.toString());
	  }
	  
	  return in == null ? null : sb2.toString(); 
	}
 
分享到:
评论

相关推荐

    Android端使用get post 方法提交数据到服务器demo

    本文将详细讲解如何在Android端使用GET和POST方法提交数据到服务器,并结合传智播客张泽华Android视频54-57中的代码示例进行解析。 一、GET方法 GET方法是最简单的HTTP请求方式,常用于获取服务器上的资源。在...

    Android Studio发起POST网络请求

    本文将详细讲解如何在Android Studio中使用Java语言和JSON数据格式实现POST请求,特别适合初学者学习。 **一、依赖库** 首先,我们需要引入必要的库,如OkHttp或Volley,它们可以帮助我们方便地发送网络请求。这里...

    android 登陆、提交数据或加载数据时提示页面

    在Android应用开发中,用户界面(UI)的交互体验至关重要,尤其是涉及到登录、提交数据以及加载数据等操作。这些操作通常涉及到网络通信、数据持久化、异步处理等多个技术领域。下面将根据提供的标题和描述,详细...

    POST提交数据加密

    在网络安全领域,POST...总的来说,POST提交数据加密是保护用户信息安全的重要手段,HttpWatch等工具则为开发者提供了查看和分析加密数据的便捷途径。理解并正确实施这些加密技术,对于构建安全的网络环境至关重要。

    C# 以Post方式提交数据

    在IT领域,特别是Web开发中,使用C#通过POST方式提交数据是一项常见且重要的技能。以下将详细解析如何使用C#实现POST请求,包括构造请求、设置参数、发送数据及处理响应。 ### C# POST请求的基本流程 1. **创建...

    post方式提交数据

    本文将详细解析"POST方式提交数据"这一主题,特别针对Android平台进行探讨。 首先,理解POST方法的基本概念。POST是HTTP协议中的一个请求方法,用于向指定资源提交数据,以创建或更新资源。它将数据封装在请求正文...

    android采用post方式获取数据

    在Android开发中,获取服务器数据是常见的操作,通常有GET和POST两种主要的HTTP请求方法。本篇将详细讲解如何在Android中使用POST方式来获取数据,并结合源代码和JSON解析进行实例说明。 首先,POST请求常用于向...

    android 后台 get和post请求数据

    而POST方法则可以传输大量数据,它将数据封装在请求体中,常用于提交表单或者上传文件。 在Android中,我们可以使用HttpURLConnection或OkHttp库来发送HTTP请求。以下是使用HttpURLConnection的示例: ```java URL...

    android httpclient文件上传 http协议post get方法向服务器传输数据

    GET方法用于获取服务器上的资源,而POST方法则常用于向服务器提交数据,如表单数据或者文件。 1. **GET方法**:GET请求将参数附加到URL后面,以问号(?)分隔,每个参数之间用&连接。这种方式简单且易于理解,但...

    Android客户端上传数据到tomcat服务端的源码

    在Android应用开发中,有时需要将客户端的数据上传到服务器进行处理或存储,这通常涉及到网络通信技术。在这个场景中,Android客户端将与Tomcat服务器进行交互,Tomcat是一款广泛使用的Java Servlet容器,常用于部署...

    采用post方式提交数据到服务器及例子

    在Android开发中,向服务器提交数据是常见的任务,通常我们使用HTTP协议的GET和POST方法。本篇文章将重点讲解如何使用POST方式提交数据到服务器,这对于Android应用与后端交互至关重要。 POST方法常用于发送用户...

    android get,post获取数据

    POST请求则常用于提交数据,如表单提交,数据在请求体中,大小限制相对较大,对用户不透明。 ### GET请求 在Android中,可以使用`HttpURLConnection`或第三方库如`OkHttp`来实现GET请求。以`HttpURLConnection`为例...

    libcurl 提交post表单数据 上传图片 demo

    libcurl 是一个强大的开源库,用于在各种网络协议下发送HTTP请求,包括POST表单数据的提交和文件上传。在本教程中,我们将探讨如何利用libcurl库在C/C++程序中实现POST方法来提交表单数据并上传图片。这个过程涉及到...

    Delphi XE10.3三层测试datasnap res+android+httppost

    总结一下,这个"Delphi XE10.3三层测试datasnap res+android+httppost"项目展示了如何在Delphi环境下,利用三层架构和DataSnap构建一个Android应用程序,通过HTTP POST与服务器进行数据交互。这个过程涵盖了客户端的...

    c# post提交接收数据

    在C#编程中,POST提交数据是常见的网络通信方式,特别是在Web应用开发中,比如向服务器发送表单数据、API接口交互等。本教程将详细讲解如何在C#中实现POST请求并接收返回的数据。 首先,理解POST请求的基本概念:...

    易语言post提交示例

    总结来说,易语言的POST提交涉及到网络连接、请求头构造、数据封装、发送请求、接收响应和处理结果等多个环节。了解这些知识点,对于进行网络编程和API调用至关重要。同时,不断实践和调试代码,是提升编程技能的...

    android采用post方式获取服务器数据

    HTTP POST请求用于向服务器提交数据,常用于表单提交。与GET方法不同,POST方法会将数据包含在HTTP请求体内发送给服务器。这在提交大量数据或敏感数据时尤其有用,因为它可以避免将数据暴露在URL中。 Android提供了...

    android post上传文件

    在Android平台上,开发人员经常需要实现文件上传的功能,例如用户在应用中分享图片或文档到服务器。本篇文章将深入探讨如何使用HttpClient库在Android中执行POST请求上传文件。虽然现在推荐使用Retrofit、OkHttp等...

    android开发的一套数据采集系统

    在Android开发领域,构建一套数据采集系统是一项关键任务,它涉及到多个技术和组件的集成与协作。本项目专注于通过Android设备实现数据的收集、处理、存储和传输,为各种业务场景提供支持。以下将详细阐述这套数据...

    Android中通过GET和POST方式以及使用HttpClient框架通过网络通信提交参数给web应用案例

    POST方法则将数据封装在请求体中,能传输大量数据,适用于上传文件或表单提交。 1. **GET方式**: - 创建`HttpGet`对象,指定URL,如`new HttpGet("http://example.com?param1=value1&param2=value2")`。 - 使用`...

Global site tag (gtag.js) - Google Analytics