文档章节

一个HttpClient调用的简单工具类

hanhanxuexi
 hanhanxuexi
发布于 2015/01/13 11:12
字数 394
阅读 49
收藏 0
package com.gzisming.util.http;

import org.apache.http.HttpEntity;
import org.apache.http.client.fluent.Request;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;

import java.io.File;
import java.io.IOException;

/**
 * HTTP请求实现
 *
 * @author 凡梦星尘(elkan1788@gmail.com)
 * @since 2014/11/7
 * @version 1.0.0
 */
public class SimpleHttpClientUtils {

    public static final String TEXT_PLAIN = "text/plain";

    public static final String TEXT_HTML = "text/html";

    public static final String TEXT_XML = "text/xml";

    public static final String APPLICATION_XML = "application/xml";

    public static final String APPLICATION_JSON = "application/json";

    private static final StrResponseHandler respHandler = new StrResponseHandler();

    /**
     * GET请求
     *
     * @param url 请求地址
     * @return 响应内容
     * @throws java.io.IOException
     */
    public static String get(String url) throws IOException {
        String content = Request.Get(url).execute().handleResponse(respHandler);
        return content;
    }

    /**
     * POST请求
     *
     * @param url 请求地址
     * @param contentType 请求体类型[text, xml, json, html]
     * @param body 请求体
     * @return 响应内容
     * @throws java.io.IOException
     */
    public static String post(String url,
                              String contentType,
                              String body) throws IOException {
        String content = Request.Post(url)
                .bodyString(body, ContentType.create(contentType))
                .execute().handleResponse(respHandler);
        return content;
    }

    /**
     * 上传文件
     *
     * @param url 请求地址
     * @param file 上传文件
     * @return 响应内容
     * @throws java.io.IOException
     */
    public static String upload(String url, File file) throws IOException {
        HttpEntity media = MultipartEntityBuilder.create()
                .addPart("media", new FileBody(file)).build();
        String content = Request.Post(url).body(media)
                .execute().handleResponse(respHandler);
        return content;
    }

    /**
     * 下载文件
     *
     * @param url   请求地址
     * @param file 文件保存位置
     * @throws java.io.IOException
     */
    public static void download(String url, File file) throws IOException {
        Request.Get(url).execute().saveContent(file);
    }
}

   实现的ResponseHander子类,如下所示:


package com.gzisming.util.http;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.util.EntityUtils;

import java.io.IOException;

/**
 * HTTP请求响应处理
 *
 * @author 凡梦星尘(elkan1788@gmail.com)
 * @since 2014/11/6
 * @version 1.0.0
 */
public class StrResponseHandler implements ResponseHandler<String> {

    @Override
    public String handleResponse(HttpResponse resp)
            throws ClientProtocolException, IOException {
        int status = resp.getStatusLine().getStatusCode();
        if (status >= 200 && status < 300) {
            HttpEntity entity = resp.getEntity();
            String body = (null!= entity) ? EntityUtils.toString(entity,"UTF-8") : ""; //处理中文编码
            return body;
        } else {
            throw new ClientProtocolException("请求失败,服务器响应代码: " + status);
        }
    }
}


© 著作权归作者所有

hanhanxuexi
粉丝 2
博文 3
码字总数 1752
作品 0
广州
私信 提问
(6)ASP.NET Core 中使用IHttpClientFactory发出HTTP请求

1.HttpClient类使用存在的问题 HttpClient类的使用所存在的问题,百度搜索的文章一大堆,好多都是单纯文字描述,让人感觉不太好理解,为了更好理解HttpClient使用存在的问题,下面让我们通过...

暗断肠
05/29
0
0
ASP.NET Core 2.1 中的 HttpClientFactory (Part 2) 定义命名化和类型化的客户端

原文:https://www.stevejgordon.co.uk/httpclientfactory-named-typed-clients-aspnetcore 发表于:2018年1月 上一篇文章《HttpClientFactory简介》我解释了创建该功能的原因。我们知道了它...

lookerblue
07/02
0
0
Android 浅谈HttpClient工具类

在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务。你可以把HttpClient想象成一个浏览器,通过它的...

Jonson
2013/07/25
714
3
一个c#的与web服务器交互的HttpClient类

.Net类库里提供了HttpWebRequest等类,方便我们编程与Web服务器进行交互. 但是实际使用中我们经常会遇到以下需求, 基础类里没有直接提供相应的功能 (WebClient类包含这些功能,只是用起来稍微麻...

鉴客
2011/12/16
3.5K
1
HttpClient/HttpUrlConnect之代理、重定向、跨域和模拟登录(session)

HttpClient和HttpUrlConnect都是java的第三方jar包,可以在maven仓库里面查询到,这两个库都是和强大的类,可以用来模拟浏览器的一些行为,从而实现网页抓取和接口调用。 这两个jar包使用其中...

陨石坠灭
2018/11/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
13
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
13
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部