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方法提交数据到服务器,并结合传智播客张泽华Android视频54-57中的代码示例进行解析。 一、GET方法 GET方法是最简单的HTTP请求方式,常用于获取服务器上的资源。在...
本文将详细讲解如何在Android Studio中使用Java语言和JSON数据格式实现POST请求,特别适合初学者学习。 **一、依赖库** 首先,我们需要引入必要的库,如OkHttp或Volley,它们可以帮助我们方便地发送网络请求。这里...
在Android应用开发中,用户界面(UI)的交互体验至关重要,尤其是涉及到登录、提交数据以及加载数据等操作。这些操作通常涉及到网络通信、数据持久化、异步处理等多个技术领域。下面将根据提供的标题和描述,详细...
在网络安全领域,POST...总的来说,POST提交数据加密是保护用户信息安全的重要手段,HttpWatch等工具则为开发者提供了查看和分析加密数据的便捷途径。理解并正确实施这些加密技术,对于构建安全的网络环境至关重要。
在IT领域,特别是Web开发中,使用C#通过POST方式提交数据是一项常见且重要的技能。以下将详细解析如何使用C#实现POST请求,包括构造请求、设置参数、发送数据及处理响应。 ### C# POST请求的基本流程 1. **创建...
本文将详细解析"POST方式提交数据"这一主题,特别针对Android平台进行探讨。 首先,理解POST方法的基本概念。POST是HTTP协议中的一个请求方法,用于向指定资源提交数据,以创建或更新资源。它将数据封装在请求正文...
在Android开发中,获取服务器数据是常见的操作,通常有GET和POST两种主要的HTTP请求方法。本篇将详细讲解如何在Android中使用POST方式来获取数据,并结合源代码和JSON解析进行实例说明。 首先,POST请求常用于向...
而POST方法则可以传输大量数据,它将数据封装在请求体中,常用于提交表单或者上传文件。 在Android中,我们可以使用HttpURLConnection或OkHttp库来发送HTTP请求。以下是使用HttpURLConnection的示例: ```java URL...
GET方法用于获取服务器上的资源,而POST方法则常用于向服务器提交数据,如表单数据或者文件。 1. **GET方法**:GET请求将参数附加到URL后面,以问号(?)分隔,每个参数之间用&连接。这种方式简单且易于理解,但...
在Android应用开发中,有时需要将客户端的数据上传到服务器进行处理或存储,这通常涉及到网络通信技术。在这个场景中,Android客户端将与Tomcat服务器进行交互,Tomcat是一款广泛使用的Java Servlet容器,常用于部署...
在Android开发中,向服务器提交数据是常见的任务,通常我们使用HTTP协议的GET和POST方法。本篇文章将重点讲解如何使用POST方式提交数据到服务器,这对于Android应用与后端交互至关重要。 POST方法常用于发送用户...
POST请求则常用于提交数据,如表单提交,数据在请求体中,大小限制相对较大,对用户不透明。 ### GET请求 在Android中,可以使用`HttpURLConnection`或第三方库如`OkHttp`来实现GET请求。以`HttpURLConnection`为例...
libcurl 是一个强大的开源库,用于在各种网络协议下发送HTTP请求,包括POST表单数据的提交和文件上传。在本教程中,我们将探讨如何利用libcurl库在C/C++程序中实现POST方法来提交表单数据并上传图片。这个过程涉及到...
总结一下,这个"Delphi XE10.3三层测试datasnap res+android+httppost"项目展示了如何在Delphi环境下,利用三层架构和DataSnap构建一个Android应用程序,通过HTTP POST与服务器进行数据交互。这个过程涵盖了客户端的...
在C#编程中,POST提交数据是常见的网络通信方式,特别是在Web应用开发中,比如向服务器发送表单数据、API接口交互等。本教程将详细讲解如何在C#中实现POST请求并接收返回的数据。 首先,理解POST请求的基本概念:...
总结来说,易语言的POST提交涉及到网络连接、请求头构造、数据封装、发送请求、接收响应和处理结果等多个环节。了解这些知识点,对于进行网络编程和API调用至关重要。同时,不断实践和调试代码,是提升编程技能的...
HTTP POST请求用于向服务器提交数据,常用于表单提交。与GET方法不同,POST方法会将数据包含在HTTP请求体内发送给服务器。这在提交大量数据或敏感数据时尤其有用,因为它可以避免将数据暴露在URL中。 Android提供了...
在Android平台上,开发人员经常需要实现文件上传的功能,例如用户在应用中分享图片或文档到服务器。本篇文章将深入探讨如何使用HttpClient库在Android中执行POST请求上传文件。虽然现在推荐使用Retrofit、OkHttp等...
在Android开发领域,构建一套数据采集系统是一项关键任务,它涉及到多个技术和组件的集成与协作。本项目专注于通过Android设备实现数据的收集、处理、存储和传输,为各种业务场景提供支持。以下将详细阐述这套数据...
POST方法则将数据封装在请求体中,能传输大量数据,适用于上传文件或表单提交。 1. **GET方式**: - 创建`HttpGet`对象,指定URL,如`new HttpGet("http://example.com?param1=value1¶m2=value2")`。 - 使用`...