package com.soft.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.nio.charset.Charset;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* POST支持发送二进制数据
*/
public class HttpUtilGet {
private static final Log logger = LogFactory.getLog(HttpUtilGet.class);
private static final String charset = "UTF-8" ;
private static final String timeOut = "2000" ; //单位毫秒,超时设置为2秒
public static String sendHttpUrlGet(String url, String data) {
try {
URL urlGet = new URL(url);
HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
http.setRequestMethod("GET"); // 必须是get方式请求
http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
http.setDoOutput(true);
http.setDoInput(true);
System.setProperty("sun.net.client.defaultConnectTimeout", timeOut);// 连接超时5秒
System.setProperty("sun.net.client.defaultReadTimeout", timeOut); // 读取超时5秒
http.connect();
if (StringUtils.isNotBlank(data)) {
OutputStream os = http.getOutputStream();
os.write(data.getBytes(charset));// 传入参数
os.flush();
if(os != null){
os.close();
}
}
InputStream is = http.getInputStream();
String message = transInputStreamToString(is, charset) ;
return message;
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
}
return null;
}
public static String sendHttpUrlPOST(String url, String data) {
try {
URL urlGet = new URL(url);
HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
http.setRequestMethod("POST");
http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
http.setDoOutput(true);
http.setDoInput(true);
System.setProperty("sun.net.client.defaultConnectTimeout", timeOut);// 连接超时5秒
System.setProperty("sun.net.client.defaultReadTimeout", timeOut); // 读取超时5秒
http.connect();
if (StringUtils.isNotBlank(data)) {
OutputStream os = http.getOutputStream();
os.write(data.getBytes(charset));// 传入参数
os.flush();
if(os != null){
os.close();
}
}
InputStream is = http.getInputStream();
String message = transInputStreamToString(is, charset) ;
return message;
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
}
return null;
}
/**
* 输入流转字符串,出现过解析数据丢失的情况
* @author liujf 2017年4月26日 下午2:16:54
* @param is
* @param encoding
* @return
*/
protected static String tansIsToString(InputStream is, String encoding) {
try {
int size = is.available();
byte[] jsonBytes = new byte[size];
is.read(jsonBytes);
String message = new String(jsonBytes, encoding);
return message ;
} catch (Exception e) {
}finally{
if(is != null){
try {
is.close();
} catch (IOException e) {
}
}
}
return null;
}
/**
* 输入流转字符串
* @author liujf 2017年4月26日 下午2:17:50
* @param is
* @param encoding
* @return
*/
private static String transInputStreamToString(InputStream is, String encoding) {
String line = null;
StringBuffer sb = new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(is,Charset.forName(encoding))); //一定传编码,否则会出现乱码
try {
while ((line = br.readLine()) != null) {
sb.append(line);
}
return URLDecoder.decode(sb.toString(), encoding);
} catch (IOException e1) {
e1.printStackTrace();
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
相关推荐
通过form.on("submit(formConfig)",function(data){...})的调用,开发者可以指定当具有特定lay-filter属性的表单触发提交事件时,执行相应的函数。在这个函数内部,返回false可以阻止表单的提交,即阻止表单数据被...
在Struts1.2中处理表单提交,特别是当表单数据包含列表对象时,需要理解一些核心概念和技术。这篇博客文章可能详细探讨了如何在Struts1.2中处理这类情况。 首先,让我们来了解Struts1.2中的表单提交流程。当用户在...
在组件类中注入`FormBuilder`服务,然后可以调用其方法来创建表单。例如,创建一个包含用户名和密码的登录表单: ```typescript import { FormBuilder, FormGroup } from '@angular/forms'; export class ...
当我们遇到使用layui框架开发的Web页面中form表单点击无反应的问题时,可以通过特定的解决方法来修复此问题。Layui是一个前端UI框架,它提供了一套简洁的CSS和JS代码模块,用以快速构建界面和交互效果。Layui的模块...
在实际应用中,`HttpFileEx`类可以作为一个独立的组件,方便其他程序模块调用,实现数据的POST提交。这不仅可以用于表单数据的提交,也可以扩展到任何需要通过POST方式向服务器发送数据的场景,如上传文件、执行API...
5. **表单提交与响应式**:与后端API无缝对接,实现表单数据的提交,同时支持表单状态的实时反馈,如表单验证错误提示。 6. **代码导出**:生成的表单设计可以被导出为Vue组件代码,方便整合到项目中。 在前端框架...
在使用layui框架进行前端开发时,form表单中的select等表单元素可能会遇到无法正常渲染的问题。这个问题通常发生在动态地向页面中添加表单元素时,比如使用JavaScript或者jQuery动态生成HTML内容,并添加到页面中。...
这个例子涵盖了layui的`form`和`layer`模块的基本使用,包括按钮事件监听、弹窗创建、表单渲染、表单验证以及表单提交。通过深入学习layui文档,你可以发掘更多高级特性和定制化选项,进一步提升你的前端开发效率。
通过以上方式,Vue3 Form 表单的二次封装能够帮助我们构建更加模块化、可维护的前端应用。同时,它也有助于提高开发效率,降低新开发者的学习成本,因为他们只需要理解并使用我们的自定义组件即可,无需深入理解底层...
`onSubmit`函数在提交时调用,并通过`.prevent`修饰符阻止了默认的表单提交行为。 6. **表单验证**: Vue3可以通过引入第三方库,如Vuelidate或使用自定义的验证逻辑来实现。使用`ref`和`watch`可以轻松实现对表单...
在 Android 应用中,经常需要向服务器提交表单数据,Volley 提供了简单且强大的方式来实现这一功能。以下将详细介绍如何使用 Volley 通过表单提交数据以及封装表单数据。 1. **Volley 模块介绍** Volley 主要由 ...
- 每次访问控件都需要判断当前线程是否为 UI 线程,并通过 `Invoke` 方法进行调用,可能会影响性能。 #### 解决方案三:使用 BackgroundWorker 组件 `BackgroundWorker` 是 .NET Framework 提供的一个用于执行后台...
4. **表单提交和重置**:组件提供了便捷的表单提交和重置方法,简化了表单操作逻辑,只需调用对应的方法即可完成表单的提交和清空。 5. **表单值的双向绑定**:Vue.js的核心特性之一就是数据绑定,vue-ele-form继承...
FormDesigner 可以作为一个独立的模块集成到任何React项目中。开发者需要先安装依赖,如`antd`和`jquery-ui`,然后引入FormDesigner的相关组件,根据文档配置并初始化设计器。在实际应用中,可以结合后端API动态加载...
现在,当用户通过表单提交文件时,Spring MVC将调用`handleFileUpload`方法处理文件上传。你可以根据需要对文件进行进一步操作,如存储到服务器、数据库或其他服务。 总结,本文介绍了Spring MVC中单文件上传的基本...
标题“RAD XE2三种调用BPL中FORM的方法”指的是在使用Embarcadero RAD Studio XE2时,如何在主程序中调用BPL包中定义的表单(FORM)。本文将详细阐述这三种方法,并探讨正确释放BPL包的策略。 首先,我们来了解什么...
对于仍需留在表单内的按钮,可以在layui的form模块中通过监听提交事件并返回`false`来阻止默认行为。例如: ```javascript form.on('submit(filter)', function(data) { // 执行你的业务逻辑 console.log('表单...
这个压缩包文件"Python代码源码-实操案例-框架案例-如何使用WTForms验证Form表单中的字段.zip"显然是为了展示如何在实际项目中运用WTForms来验证表单字段,帮助开发者理解并掌握这一技术。下面我们将详细讨论WTForms...
你可以在表单元素上使用onSubmit事件处理函数,并传递一个event参数,这个参数是一个事件对象,你可以通过调用event.preventDefault()来防止表单的默认提交行为,这对于异步表单提交尤其重要。此外,你还可以通过...
`FormBuilder`可能还包含了一些处理表单提交的辅助方法,如验证数据或转换数据格式。 **面向对象的优势** 1. **代码重用**:`FormBuilder`类可以被多次实例化,为不同的表单生成代码,减少了重复工作。 2. **模块...