HttpClent


public class UrlDispatcherUtil {

private HttpClient client = new HttpClient();

public UrlDispatcherUtil(String host, int port, String protocol){
client.getHostConfiguration().setHost(host, port, protocol);
}

public String getRequest(String url) throws Exception{
String destUrl = url.replaceAll("%26", "&");

URI uri = new URI(destUrl,false,"UTF-8");

GetMethod get = new GetMethod( uri.toString() );
client.executeMethod(get);
String r = get.getResponseBodyAsString();
get.releaseConnection();

return r;
}


public void doGet( HttpServletRequest req, HttpServletResponse resp ) throws URIException, NullPointerException{
String queryPath = req.getRequestURI();
StringBuffer sb = new StringBuffer(queryPath);
Set<String > keys = req.getParameterMap().keySet();
sb.append("?");

for(String key : keys){
sb.append(key).append("=").append(req.getParameter(key)).append("&");
}
sb.append("t=").append(System.currentTimeMillis());
queryPath = "/nsa"+sb.toString();
System.out.println(queryPath);
String destUrl = queryPath.replaceAll("%26", "&");
URI uri = new URI(destUrl,false,"UTF-8");
GetMethod get = new GetMethod( uri.toString());
try {
client.executeMethod(get);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}

try {
for( Header header : get.getRequestHeaders() ){
resp.addHeader(header.getName(), header.getValue() );
}
resp.setCharacterEncoding(get.getResponseCharSet());
System.out.println(get.getResponseCharSet());
Streams.copy(get.getResponseBodyAsStream(), resp.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}

resp.setStatus( get.getStatusCode() );
get.releaseConnection();
}

public void doPost( HttpServletRequest req, HttpServletResponse resp ) throws NullPointerException, HttpException, IOException{
System.out.println("dopost begin --------------------------");
String queryPath = req.getRequestURI();
StringBuffer sb = new StringBuffer("/nsa").append(queryPath);
Set<String > keys = req.getParameterMap().keySet();
URI uri = new URI(sb.toString(),false,"UTF-8");

System.out.println("dopost begin --------------------------"+uri.toString());

PostMethod pt = new PostMethod( uri.toString() );
List<NameValuePair> ptParams = new ArrayList<NameValuePair>();
for(String key : keys ){
NameValuePair pair = new NameValuePair(key, req.getParameter(key));
ptParams.add(pair);
}

NameValuePair[] pa = new NameValuePair[keys.size()];
ptParams.toArray(pa);

pt.setRequestBody( pa );
int statusCode = client.executeMethod(pt);

System.out.println(statusCode+"+++++++++++++++++++++++++++++++++");
if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY
|| statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
Header locationHeader = pt.getResponseHeader("location");
String location = null;

if (locationHeader != null) {
location = locationHeader.getValue();
System.out.println("The page was redirected to:" + location);
} else {
System.err.println("Location field value is null.");
}
}
for( Header header : pt.getRequestHeaders() ){
resp.addHeader(header.getName(), header.getValue() );
}

resp.setStatus( pt.getStatusCode() );
resp.setCharacterEncoding(pt.getResponseCharSet());
System.out.println(pt.getResponseCharSet());
Streams.copy(pt.getResponseBodyAsStream(), resp.getOutputStream());
pt.releaseConnection();
}

public String postRequest(String url, Map<String,String> params) throws Exception {

PostMethod pt = new PostMethod( url );

List<NameValuePair> ptParams = new ArrayList<NameValuePair>();
for(String key : params.keySet() ){
NameValuePair pair = new NameValuePair(key, params.get(key));
ptParams.add(pair);
}

NameValuePair[] pa = new NameValuePair[params.size()];
ptParams.toArray(pa);

pt.setRequestBody( pa );

int statusCode = client.executeMethod(pt);
if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY
|| statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
Header locationHeader = pt.getResponseHeader("location");
String location = null;

if (locationHeader != null) {
location = locationHeader.getValue();
System.out.println("The page was redirected to:" + location);
} else {
System.err.println("Location field value is null.");
}
}

String r = pt.getResponseBodyAsString();
pt.releaseConnection();
return r;
}
} :)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值