java实现http接口

package com.lvxh.service;

import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import com.lvxh.bean.NameValuePairList;

/**
 * Http工具类
 *
 * @author lvxh
 * @since V100R001C02
 * @version V100R001C02
 */
public abstract class HttpUtil {

/**
     * 用法 String url="http://192.168.2.181:8080/sic/app/login.action"; Map
     * <String,String>map = new HashMap<>(); map.put("domainCode", "SA60");
     * map.put("loginName", "root"); map.put("password", "rootroot");
     * System.out.println(sendSms(url,map));
     *
     * @param url
     *            String 请求地址
     *
     * @param list
     *            键值对列表
     *
     * @return String 返回结果集
     */
    public static String post(String url, NameValuePairList list) {
        HttpClient httpclient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(url);
        String strResult = "";
        try {
            httpPost.addHeader("Content-type", "application/x-www-form-urlencoded");
            httpPost.setEntity(new UrlEncodedFormEntity(list.getList(), "UTF-8"));

HttpResponse response = httpclient.execute(httpPost);
            if (response.getStatusLine().getStatusCode() == 200) {
                strResult = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
            } else {
                strResult = String.valueOf(response.getStatusLine().getStatusCode());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return strResult;
    }

/**
     * .以JSON方式(application/json)发送HTTP请求,并实时返回相应消息
     *
     * @param url
     *            请求URL
     * @param data
     *            请求数据
     * @return 请求相应
     */
    public static String sendJSONPostImmediate(String url, String data) {
        return sendPost(url, data.replaceAll("\\\\u003d", "="), "application/json", 1000);
    }

/**
     * .以JSON方式(application/json)发送HTTP请求,并返回相应消息
     *
     * @param url
     *            请求URL
     * @param data
     *            请求数据
     * @return 请求相应
     */
    public static String sendJSONPost(String url, String data,int timeout) {
        return sendPost(url, data.replaceAll("\\\\u003d", "="), "application/json",timeout);
    }

/**
     * .以FORM方式(application/x-www-form-urlencoded)发送HTTP请求,并返回相应消息
     *
     * @param url
     *            请求URL
     * @param data
     *            请求数据
     * @return 请求相应
     */
    public static String sendFormPost(String url, String data,int timeout) {
        return sendPost(url, data.replaceAll("\\\\u003d", "="), "application/x-www-form-urlencoded",timeout);
    }

/**
     * .发送HTTP请求,并返回相应消息
     *
     * @param url
     *            请求URL
     * @param data
     *            请求数据
     * @param contentType
     *            请求类型
     * @param timeout
     *            请求超时设置
     * @return 请求相应
     */
    private static String sendPost(String url, String data, String contentType, int timeout) {
        StringBuffer sbf = new StringBuffer();
        HttpURLConnection connection = null;
        try {
            connection = (HttpURLConnection) new URL(url).openConnection();
            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.setRequestMethod("POST");
            connection.setConnectTimeout(timeout);
            connection.setReadTimeout(timeout);
            connection.setUseCaches(false);
            connection.setInstanceFollowRedirects(true);
            connection.setRequestProperty("Content-Type", contentType);
            connection.connect();

IOUtils.write(data, connection.getOutputStream(), StandardCharsets.UTF_8);

for(String line : IOUtils.readLines(connection.getInputStream(), StandardCharsets.UTF_8)) {
                sbf.append(line);
            }
        } catch (Exception e) {
        }
        finally{
            if (connection != null){
                connection.disconnect();
            }
        }
        return sbf.toString();
    }

/**
     * 用法 String url="http://192.168.2.181:8080/sic/app/login.action"; Map
     * <String,String>map = new HashMap<>(); map.put("domainCode", "SA60");
     * map.put("loginName", "root"); map.put("password", "rootroot");
     * System.out.println(sendSms(url,map));
     *
     * @param
     *            the type of the desired object
     *
     * @param url
     *            String 请求地址
     *
     * @param list
     *            键值对列表
     *
     * @param classOfT
     *            classOfT 转换类型
     *
     * @return Object 返回结果集
     */
    public static <T> T getPostObj(String url, NameValuePairList list, Class<T> classOfT) {
        String jsonString = post(url, list);
        if (StringUtils.isEmpty(jsonString)) {
            return null;
        }
        return JsonUtil.getObject(jsonString, classOfT);
    }
}

时间: 2025-01-03 12:55:21

java实现http接口的相关文章

JavaSE入门学习21:Java面向对象之接口(interface)(二)

一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.java源文件代码: public class Test{ public static void main(String[] args){ //实现接口Singer Singer s1 = new Student("Amy"); s1.sing(); s1.sleep(); s1.study

java的List接口的实现类 ArrayList,LinkedList,Vector 的区别

Java的List接口有3个实现类,分别是ArrayList.LinkedList.Vector,他们用于存放多个元素,维护元素的次序,而且允许元素重复. 3个具体实现类的区别如下: 1. ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制.移动.代价比较高.因此,它

老白的JAVA课程13 接口

之前我们讲到了java4大特征的最后一个抽象的特征,其实在抽象这个特征里面,我们还有一个特征-接口,今天我们就来学一学接口.  用电脑,手机等电子产品来比喻接口,可以更好的理解,比如用符合接口的插头就可以了.  接口具有很好的扩展性,方便.  接口的由来   例子:奥拓奥迪都是汽车,汽车的维护都是可以用调节引擎和更换汽油的方法,那么奥拓和奥迪也都可以:但是有了更多的维护对象以后,比如说大货车,卡车等等,其他的对象不一定需要每一步维护,或者都不需要维护:又比如不同枪支有不同特性的例子.  因此,我

JDK1.8 java.io.Serializable接口详解

java.io.Serializable接口是一个标志性接口,在接口内部没有定义任何属性与方法.只是用于标识此接口的实现类可以被序列化与反序列化.但是它的奥秘并非像它表现的这样简单.现在从以下几个问题入手来考虑. 希望对象的某些属性不参与序列化应该怎么处理? 对象序列化之后,如果类的属性发生了增减那么反序列化时会有什么影响呢? 如果父类没有实现java.io.Serializable接口,子类实现了此接口,那么父类中的属性能被序列化吗? serialVersionUID属性是做什么用的?必须申明

java抽象类和接口

1.抽象类 抽象类在概念上描述的是抽象世界,抽象类刻画了公有行为的特征,并且通过继承机制传送给它的派生类.抽象类使用关键字abstract 修饰,语法如下: abstract class 类名{ 类体; } 抽象方法是指在抽象类中某些成员方法没有具体的实现,只有方法声明.抽象方法使用关键字abstract 修饰,格式如下: public abstract 返回类型 方法名([参数列表]); 抽象类和抽象方法的具体规则如下: 1.用abstract 关键字修饰一个类时,该类叫做抽象类,用abstr

java----数据结构与算法----JavaAPI:java.util.Collection接口

Java API--java.util.Collection接口 /** * @author chen * @date 20170317 * @description:本程序讲述Collection接口 * java.util.Collection * 概述:Collection接口是Set和List接口的父接口,Collection接口中定义了一些 * 用于集合元素操作的方法,被其子接口以及子接口的实现类所继承 * 构造函数 * java中接口不能有构造函数 * 成员函数: * [1]概述,由

java中set接口的用法

java中的set接口有如下的特点: 不允许出现重复元素: 集合中的元素位置无顺序: 有且只有一个值为null的元素. 因为java中的set接口模仿了数学上的set抽象,所以,对应的数学上set的特性为: 互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次. 无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的.集合上可以定义序关系,定义了序关系后,元素之间就可以按照序关系排序.但就集合本身的特性而言,元素之间没有必然的序. 空集的性质:空集是一切集合的子集 S

JAVA学习经验--总结JAVA抽象类和接口

* --总结JAVA抽象类和接口  * 1.抽象类:  *             1>抽象类可以修饰方法,修饰类,但不能修饰属性,不能被实例化  *             2>抽象类可以被继承,只能是单继承,继承抽象类必须实现抽象方法  *             3>抽象类不能被static ,fina,private一起修饰  *             4>抽象类是有多态性的  *  * 2.接口:  *             1>接口是一种特殊的抽象类,不能被实

JavaSE入门学习20:Java面向对象之接口(interface)

一Java接口 接口(英文:interface)是抽象方法和常量值的集合,在Java编程语言中是一个抽象类型,接口通常以interface来声 明.类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些 类里方法的实现细节,它只规定这些类里必须提供某些方法.一个类或接口通过继承接口的方式,从而来继承接口的 抽象方法. 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念.类描述对象的属性和方法.接口则包含 类要实现的方法.除非实现接口的类是抽

java类与接口练习

java类与接口练习--coursera java 课程作业 1.注意代码应该使用题目中所要求的语法要素:2.注意良好的代码风格:3.注意提交整个project,上传压缩后的附件,互评时可被成功执行:4.注意写一个简要的代码说明(请说明使用的IDE等): 编写一个小的程序,其中定义一些接口.类.抽象类,定义它们的成员(字段及方法), 要求使用setter/getter, static, final, abstract,@Override等语法要素,并写一个main函数来使用它们.这些类.接口可以