java 接口表单提交_Java http 调用接口提交表单以及文件
Java HttpURLConnection 使用
/**
*
*/
package com.demo.java;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
/**
*
描述:
*
* @author saohuo
* @date 2019年11月4日
* @version
*/
public class MultipartFormDataPost {
// multipart/form-data; 表单各字段提交分隔符
private static String boundary = "--69695201314";
public void submit(Map generalField, List files) throws Exception {
HttpURLConnection connection = null;
OutputStream os = null;
URL url = new URL("http:");
connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setUseCaches(false);
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Accept-Charset", "UTF-8");
connection.setRequestProperty("content-type", "multipart/form-data;boundary="+boundary);
os = new DataOutputStream(connection.getOutputStream());
// 文本参数组装
StringBuffer textFormBody = new StringBuffer();
Map formField = generalField;
formField.forEach((k,v) -> {
textFormBody.append("\r\n").append("--").append(boundary).append("\r\n");
textFormBody.append("Content-Disposition: form-data; name=\""+k+"\"");
textFormBody.append("\r\n\r\n");//名称与数据之间要有两个回车换行
textFormBody.append(v);
});
// 提交文本表单
os.write(textFormBody.toString().getBytes("UTF-8"));
// 文件数据
if (files != null && !files.isEmpty()) {
int fileIndex = 0;
for(File file : files) {
String filename = file.getName();
String fileMinetype = URLConnection.getFileNameMap().getContentTypeFor(filename);
StringBuffer fileFormBody = new StringBuffer();
fileFormBody.append("\r\n").append("--").append(boundary).append("\r\n");
fileFormBody.append("Content-Disposition: form-data; name=\"files["+fileIndex+"]\"; filename=\"" + filename + "\"");
fileFormBody.append("\r\n");
fileFormBody.append("Content-Type:" + fileMinetype);
fileFormBody.append("\r\n\r\n");
// 提交文件基本信息(文件名、文件长度、文件类型等)
os.write(fileFormBody.toString().getBytes());
InputStream fileStream = new FileInputStream(file);
DataInputStream fileDataIs = new DataInputStream(fileStream);
int filebytes = 0;
byte[] filebufferOut = new byte[1024];
while ((filebytes = fileDataIs.read(filebufferOut)) != -1) {
os.write(filebufferOut, 0, filebytes);
}
fileDataIs.close();
fileIndex++;
}
} // 文件写入结束
// 最后写入结束标识
byte[] endBodyData = ("\r\n--" + boundary + "--\r\n").getBytes();
os.write(endBodyData);
os.flush();
int responseCode = connection.getResponseCode();
// 提交结果状态码
System.out.println(responseCode);
}
}
java 接口表单提交_Java http 调用接口提交表单以及文件相关推荐
- java爬虫隐藏表单提交_java爬虫--jsoup简单的表单抓取案例
分析需求: 某农产品网站的农产品价格抓取 页面展示如上: 标签展示如上: 分析发现每日价格行情包括了蔬菜,水果,肉等所有的信息,所以直接抓每日行情的内容就可以实现抓取全部数据. 软件环境:eclips ...
- jquery表单ajax json数据,jquery序列化form表单使用ajax提交后处理返回的json数据
1.返回json字符串: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try ...
- servlet html js提交表单,使用jquery.form.js实现form表单无刷新提交简单示例
直到今天,才发现JQuery原来有个Form表单插件,而且还是无刷新页面提交表单,看来自己还要多加强学习啊!不多说了,直接贴代码吧,代码比较简单! Servlet代码: package com.pro ...
- JS--JavaScript提交表单(submit事件)、重置表单、取消默认提交表单(单击按钮、回车)
提交表单 使用< input > 或 < button >标签都可以定义提交按钮,只要将type属性值设置为"submit"即可,而图像按钮则是通过将 &l ...
- jmeter测试接口--form表单提交请求(解决请求传参为空的问题)
jmeter测试接口--form表单提交请求(解决请求传参为空的问题) 参考文章: (1)jmeter测试接口--form表单提交请求(解决请求传参为空的问题) (2)https://www.cnbl ...
- ele-ui表单验证,异步调用接口判断是否重名
背景 ele-ui使用表单验证,需要调用接口判断是否是重名,重名则停留在当前页,否则就进行到下一页. 存在问题 使用普通的validate rules: {name: [{ required: tru ...
- android 漂亮的表单界面,面向ArcGIS for Android的表单界面生成器的设计与实现
孙俊英 陈忠超 摘 要:基于ArcGIS for Android的采集系统作为当下主要的野外采样方式之一,被广泛的应用于各类场景,针对不同采集内容,采集系统的主要差异在于采样的属性数据所有不同,使用传 ...
- angularjs 表单校验指令_angular4.0的模板式表单、响应式表单及其错误提示
模板式表单 NgForm.NgModel.NgModelGroup是FormModule里的内容,NgForm会自动拦截标准的表单处理事件(eg.提交),angular用ngSubmit代替标准的表单 ...
- html中表单元素中的单选框,Html表单元素及表单元素详解
大纲 1.认识表单 2.认识表单元素 3.表单元素的分类 4.表单元素--文本框 5.表单元素button 6.表单元素--单选.多选 7.表单元素--select 8.表单元素--textarea ...
最新文章
- 卷积:kernel size/padding/stride
- 长寿即服务:创业公司如何用AI技术颠覆传统药物研发
- android 随意漂浮动画,Android实现气泡漂浮动画,类似IOS Game Center中气泡动画
- display属性_前端基础:Grid 布局教程,重新复习grid布局的容器和项目属性
- mysql语法与decode语法的不同
- java获取文件夹 路径,Java获取文件的路径
- Windows Phone 8.1 开发实例 网络编程 天气预报
- 使用Java实现面向对象编程(1)
- 三菱st语言编程实例_C语言编程实例39
- Android-7.0-Nuplayer概述
- ios html5 苹方字体,iOS中使用自定义字体-苹方字体
- NI-9253 C系列电流输入模块-9253
- ChineseBERT: Chinese Pretraining Enhanced by Glyph and Pinyin Information
- openbsd系统可以做什么服务器,OpenBSD 3.8 release 架设FTP服务器
- 涂涂乐的详细实现之一--画笔核心功能
- 云基础设施自研,阿里云腾讯云华为云亮出啥高招?
- 调用高德地图Api实现通过地址转经纬度
- SQL语句-各种查询
- 如何激励你的内容团队产出更好的创意
- 解决笔记本光标乱移动问题
热门文章
- background-size 兼容ie8以下浏览器的方法
- ubuntu zip解压
- asp.net网站编码测试
- 【剑指offer】面试题22:链表中倒数第 K 个节点
- java xy x y_为什么该语句在Java中不起作用x ^ = y ^ = x ^ = y;
- python中scale_Python中的Log-scale mathplotlib?
- 电脑fps低怎么办_电脑想要英雄联盟玩的流畅,主要看哪几个方面?
- C++对字符串每个字母按照字典顺序排序
- python 绘制功率谱密度图 plt.psd
- cocos2dx实现象棋之运动