http请求pom 客户端_HttpClient (POST GET PUT)请求

该博客详细介绍了如何使用Apache HttpClient库进行HTTP的GET、POST和PUT请求。包括创建HttpClient实例、设置请求头、执行请求以及处理响应内容的方法。
摘要由CSDN通过智能技术生成

HttpClient (POST GET PUT)请求

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;

}

}

HttpClient方式模拟http请求设置头

关于HttpClient方式模拟http请求,请求头以及其他参数的设置. 本文就暂时不给栗子了,当作简版参考手册吧. 发送请求是设置请求头:header HttpClient httpClient = ...

HttpClient发送get post请求和数据解析

最近在跟app对接的时候有个业务是微信登录,在这里记录的不是如何一步步操作第三方的,因为是跟app对接,所以一部分代码不是由我写,我只负责处理数据,但是整个微信第三方的流程大致都差不多,app端说要传 ...

HttpWebRequest 改为 HttpClient 踩坑记-请求头设置

HttpWebRequest 改为 HttpClient 踩坑记-请求头设置 Intro 这两天改了一个项目,原来的项目是.net framework 项目,里面处理 HTTP 请求使用的是 WebR ...

使用HttpClient发送Get/Post请求 你get了吗?

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议 ...

org.apache.httpcomponents httpclient 发起HTTP JSON请求

1. pom.xml org.apache.httpcomponents

httpclient的几种请求URL的方式

一.httpclient项目有两种使用方式.一种是commons项目,这一个就只更新到3.1版本了.现在挪到了HttpComponents子项目下了,这里重点讲解HttpComponents下面的ht ...

HttpClient发起Http/Https请求工具类

org.apache.httpcomponentshttpcl ...

HttpClient方式模拟http请求

方式一:HttpClient import org.apache.commons.lang.exception.ExceptionUtils; import org.apache.http.*; im ...

Android HttpClient GET或者POST请求基本使用方法(转)

在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务.这里只介绍如何使用HttpCl ...

随机推荐

idea-生成key的Java代码

import java.math.BigInteger; import java.util.Date; import java.util.Random; import java.util.Scanne ...

java 实现从15位~18位的身份证号码转换,校验中国大陆公民身份证、香港居民身份证、澳门身份证和台湾身份证。

package xidian.sl.netcredit.util; /** * Copyright (C) 2009-2010 Yichuan, Fuchun All rights reserved. ...

StringIO学习

StringIO StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的“文件”,我们可以将操作磁盘文件那样来操作StringIO.一个简单的例子,让你对StringIO有一 ...

(四)linux常用命令

1.在vim下要查找特定的字符串可按Esc键,然后按/字符串,如/DFGE 2.在vim下要显示行数:set nu

POJ_2104_Kth_(主席树)

描述 http://poj.org/problem?id=2104 给出一个n个数的数列,m次询问,每次询问求区间[l,r]中第k小的数,无修改操作. K-th Number Time Limit: ...

rsync实现文件备份同步(比如服务器镜像)

[rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync] 一.什么是rsync rsync,remote synchronize顾 ...

Android Toast 工具类

android  中常用系统吐司工具类 package cn.yhq.utils; import android.content.Context; import android.widget.Toas ...

断路器(Curcuit Breaker)模式

在分布式环境下,特别是微服务结构的分布式系统中, 一个软件系统调用另外一个远程系统是非常普遍的.这种远程调用的被调用方可能是另外一个进程,或者是跨网路的另外一台主机, 这种远程的调用和进程的内部调用最 ...

npm install 提示权限不足 Error: EPERM: operation not permitted, unlink XXX

问题 使用npm install时提示权限不足 原因 这里原因有两个: 没有管理员权限访问C盘下npm路径导致下载失败. NPM官网没有下载权限. 解决方案 第一原因 这里可以使用管理员身份执行以下命 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值