`
H小阿飞
  • 浏览: 278581 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

HttpClient (POST GET PUT)请求

    博客分类:
  • Java
 
阅读更多
package com.curender.web.server.http;

import java.io.IOException;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.PutMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.curender.dal.util.ConstantsDal;

/**
 * HttpClient GET POST PUT 请求
 * @author huang
 * @date 2013-4-10
 */
public class HttpRequest
{

    protected static Log log = LogFactory.getLog(HttpRequest.class);
    private static HttpRequest httpRequst=null;   
    private HttpRequest(){}  
    public static HttpRequest getInstance(){
        if(httpRequst==null){
            synchronized(HttpRequest.class){
                if(httpRequst == null){
                    httpRequst=new HttpRequest();
                }
            }  
        }
        return httpRequst;
    }
    
    /**
     * HttpClient GET请求
     * @author huang
     * @date 2013-4-9
     * @param uri
     * @return resStr 请求返回的JSON数据
     */
    public String doGet(String uri){
        String resStr = null;
        HttpClient htpClient = new HttpClient();
        GetMethod getMethod = new GetMethod(ConstantsDal.SERVER_URL+uri);
        getMethod.getParams().setParameter( HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());     
        try{
            int statusCode = htpClient.executeMethod( getMethod );
//            log.info(statusCode);
            if(statusCode != HttpStatus.SC_OK){              
                log.error("Method failed: "+getMethod.getStatusLine());
                return resStr;
            }           
            byte[] responseBody = getMethod.getResponseBody();         
            resStr = new String(responseBody,HttpConstants.ENCODED);
        } catch (HttpException e) {
            log.error("Please check your provided http address!");  //发生致命的异常,可能是协议不对或者返回的内容有问题
        } catch (IOException e) {
            log.error( "Network anomaly" );  //发生网络异常
        }finally{
            getMethod.releaseConnection(); //释放连接
        }
        return resStr;
    }
    
    /**
     * HttpClient POST请求
     * @author huang
     * @date 2013-4-9
     * @param s_user
     * @return resStr 请求返回的JSON数据
     */
    @SuppressWarnings( "deprecation" )
    public String doPost(String uri,String jsonObj){    
        String resStr = null;
        HttpClient htpClient = new HttpClient();
        PostMethod postMethod = new PostMethod(ConstantsDal.SERVER_URL+uri);
        postMethod.addRequestHeader( "Content-Type","application/json" );  
        postMethod.getParams().setParameter( HttpMethodParams.HTTP_CONTENT_CHARSET, HttpConstants.ENCODED );
        postMethod.setRequestBody( jsonObj );
        try{
            int statusCode = htpClient.executeMethod( postMethod );
//            log.info(statusCode);
            if(statusCode != HttpStatus.SC_OK){
              //post和put不能自动处理转发          301:永久重定向,告诉客户端以后应从新地址访问    302:Moved Temporarily  
                if(statusCode == HttpStatus.SC_MOVED_PERMANENTLY||statusCode == HttpStatus.SC_MOVED_TEMPORARILY){
                    Header locationHeader = postMethod.getResponseHeader( "location" );
                    String location = null;
                    if(locationHeader!=null){
                        location = locationHeader.getValue();
                        log.info("The page was redirected to :"+location);
                    }else{
                        log.info("Location field value is null");
                    }
                }else{
                    log.error("Method failed: "+postMethod.getStatusLine());                    
                }
                return resStr;
            }                     
            byte[] responseBody = postMethod.getResponseBody();           
            resStr = new String(responseBody,HttpConstants.ENCODED);  
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            postMethod.releaseConnection();
        }
        return resStr;
    }
    
    /**
     * HttpClient PUT请求
     * @author huang
     * @date 2013-4-10
     * @return
     */
    @SuppressWarnings( "deprecation" )
    public String doPut(String uri,String jsonObj){
        String resStr = null;
        HttpClient htpClient = new HttpClient();
        PutMethod putMethod = new PutMethod(ConstantsDal.SERVER_URL+uri);
        putMethod.addRequestHeader( "Content-Type","application/json" );
        putMethod.getParams().setParameter( HttpMethodParams.HTTP_CONTENT_CHARSET, HttpConstants.ENCODED );
        putMethod.setRequestBody( jsonObj );
        try{
            int statusCode = htpClient.executeMethod( putMethod );
//            log.info(statusCode);
            if(statusCode != HttpStatus.SC_OK){
                log.error("Method failed: "+putMethod.getStatusLine());
                return null;
            }  
            byte[] responseBody = putMethod.getResponseBody();         
            resStr = new String(responseBody,HttpConstants.ENCODED);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            putMethod.releaseConnection();
        }
        return resStr;
    }
}

 HttpConstants.ENCODED=“UTF-8”

ConstantsDal.SERVER_URL=http://ip/

  • lib.rar (1.1 MB)
  • 下载次数: 226
分享到:
评论

相关推荐

    httpclient post json 数据

    其次,HttpClient是C#中处理HTTP请求的标准库,它提供了发送各种HTTP请求的方法,包括GET、POST、PUT等。对于POST请求,我们通常用来提交数据到服务器,例如创建新的资源或更新已有资源。 要使用HttpClient发送JSON...

    对于C#(HttpClient)方式网络请求的封装

    HttpClient是.NET Framework和.NET Core中用于发送HTTP请求的标准库,它提供了异步和同步的API,适用于各种网络操作,如GET、POST、PUT等。 描述中的链接指向了一个具体的博客文章,该文章详细解释了如何在C#项目中...

    httpclient 执行get/post/put代码

    PUT请求通常需要包含完整的资源数据,因为它是替换而非添加。 ```java HttpPut httpPut = new HttpPut("http://example.com/resource"); StringEntity entity = new StringEntity("{\"key\":\"value\"}"); ...

    Android-HttpClient工具类简单轻松的实现getpostput和delete请求

    在Android开发过程中,网络请求是不可或缺的一部分,而`HttpClient`是一个强大的HTTP客户端库,它允许开发者执行各种HTTP操作,如GET、POST、PUT和DELETE。本篇文章将详细讲解如何使用`HttpClient`工具类来简化这些...

    HttpClient发送http请求(post和get)需要的jar包+内符java代码案例+注解详解

    通过HttpClient,开发者可以方便地创建HTTP客户端,执行各种HTTP请求,包括GET、POST、PUT、DELETE等,并接收响应。在Java项目中,如果需要与Web服务交互,HttpClient是一个常见的选择。 1. **HTTP请求**:HTTP(超...

    java http 发送 put delete post get请求

    在Java中,可以使用HttpURLConnection或Apache HttpClient库来实现PUT请求。例如,使用HttpURLConnection: ```java URL url = new URL("http://example.com/resource/1"); HttpURLConnection connection = ...

    Http(get)请求数据Android Studio使用HttpClient

    虽然本教程只涉及GET请求,`HttpClient`也支持其他HTTP方法,如POST、PUT、DELETE等。使用`HttpPost`、`HttpPut`、`HttpDelete`分别代表这些方法,设置请求参数的方式会有所不同,比如POST请求需要使用`...

    Java后端HttpClient Post提交文件流 及服务端接收文件流

    HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。

    http接口通用调试工具,支持get、post、put、patch、delete方法

    本文将深入探讨一个通用的HTTP接口调试工具,该工具支持GET、POST、PUT、PATCH和DELETE等常见HTTP请求方法,并且专注于处理JSON格式的数据。这将帮助开发者在开发和测试过程中更加高效地进行接口调用与验证。 首先...

    java使用HttpClient发送http请求

    Apache HttpClient库提供了丰富的功能,包括GET、POST、PUT等各种HTTP方法的支持。以下是一个简单的GET请求示例: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new ...

    httpclient使用post方法上传多个图片个其他参数的demo源码

    这个库为开发者提供了强大的功能,能够方便地实现各种HTTP操作,如GET、POST、PUT等。在本示例中,我们将关注“httpclient使用post方法上传多个图片和其他参数的demo源码”,这是一个涉及到文件上传和参数传递的重要...

    使用httpclient访问servlet

    Apache HttpClient是一个功能丰富的Java库,它允许我们执行各种HTTP方法(GET、POST、PUT、DELETE等)并处理响应。HttpClient提供了灵活的配置选项,可以定制请求头、处理重定向、管理连接池等。 2. **HttpClient...

    JAVA发送HttpClient请求及接收请求完整代码实例

    它允许开发者发送各种HTTP方法(如GET、POST、PUT等)并处理响应。在本文中,我们将深入探讨如何使用HttpClient发送请求以及接收响应的完整代码实例。 首先,我们需要引入Apache HttpClient库。如果你使用的是Maven...

    HttpClient工具类

    http工具类,基于java,封装HttpClient的四种提交方式:post,get,delete,put

    httpClient完整请求Demo

    根据你的需求,你可以选择HttpGet或HttpPost来发起请求。下面以HttpPost为例,展示如何发送带有JSON数据的POST请求: ```java HttpPost httpPost = new HttpPost("http://example.com/api"); ``` 3. **构建JSON...

    httpclient

    1. **多种HTTP方法支持**:HttpClient支持GET、POST、PUT、DELETE等多种HTTP方法,满足不同类型的HTTP操作需求。 2. **连接管理**:HttpClient可以自动管理HTTP连接,如复用连接、控制连接池大小,从而提高效率并...

    httpclient.jar包下载.zip

    除了基本的GET和POST,HttpClient还支持PUT、DELETE等其他HTTP方法,以及更复杂的特性,如HTTP连接管理、重试策略、身份验证、Cookie处理等。 网络协议方面,HttpClient遵循HTTP/1.1标准,并且可以与HTTPS(即安全...

    php中http请求封装HttpClient精华中的经典代码

    2. **HTTP方法支持**:包括GET、POST、PUT、DELETE等多种HTTP请求方法。 3. **请求参数处理**:对于POST请求,需要处理表单数据、JSON数据或文件上传;对于GET请求,可能需要添加查询参数。 4. **请求头管理**:设置...

    HttpClientUtil工具类 里面包含GET POST 及返回值处理

    HttpClientUtil工具类是Java开发中一个非常实用的工具,它封装了Apache的HttpClient库,用于简化HTTP请求的发送,包括GET和POST方法。这个工具类的主要优点在于它可以帮助开发者快速地构建网络请求,无需深入了解...

Global site tag (gtag.js) - Google Analytics