/**
*
*/
package cn.vwall.player;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.Header;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.ProtocolException;
import org.apache.http.client.RedirectStrategy;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.params.ClientPNames;
import org.apache.http.client.utils.URIUtils;
import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieOrigin;
import org.apache.http.cookie.CookieSpec;
import org.apache.http.cookie.CookieSpecFactory;
import org.apache.http.cookie.MalformedCookieException;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.ByteArrayBody;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.cookie.BrowserCompatSpec;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;
/**
* @author star.y
* =============================================================
* http://www.eqiao.com
* 2013-10-4
* Flex_Player-cn.vwall.player-HttpTools.java
* =============================================================
*/
public class HttpTools {
private DefaultHttpClient httpclient ;
private FileWriter fw;
private FileReader fr;
private char [] cookieString =new char[4096];
private Logger loger = Logger.getLogger(HttpTools.class);
public HttpTools(){
try {
httpclient = new DefaultHttpClient();
//setting cookie
fw = new FileWriter("C:/cookie.txt");
fr = new FileReader("C:/cookie.txt");
//cookie strategy
CookieSpecFactory csf = new CookieSpecFactory() {
public CookieSpec newInstance(HttpParams params) {
return new BrowserCompatSpec() {
@Override
public void validate(Cookie cookie, CookieOrigin origin)throws MalformedCookieException {
// Oh, I am easy
}
};
}
};
httpclient.getCookieSpecs().register("easy", csf);
httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, "easy");
// 手动 redirect
httpclient.setRedirectStrategy(new RedirectStrategy() {
@Override
public boolean isRedirected(HttpRequest request, HttpResponse response,
HttpContext context) throws ProtocolException {
return false;
}
@Override
public HttpUriRequest getRedirect(HttpRequest request,
HttpResponse response, HttpContext context)
throws ProtocolException {
return null;
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param propotal
* @param host
* @param port
* @param path
* @param params
* @return
*/
public synchronized String get(String propotal ,String host,int port ,String path,Map<String,String> params){
String result = "";
HttpGet request = null;
try{
List<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>();
for(Map.Entry<String, String> param : params.entrySet()){
pairs.add(new BasicNameValuePair(param.getKey(),param.getValue()));
}
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(pairs, "UTF-8");
String param = EntityUtils.toString(entity);
URI uri = URIUtils.createURI(propotal, host, port,path, param, null);
request = new HttpGet(uri);
//setHeader(request);
HttpResponse response = httpclient.execute(request);
//读取cookie并保存文件
List<org.apache.http.cookie.Cookie> cookies = httpclient.getCookieStore().getCookies();
if (!cookies.isEmpty()) {
for (int i = 0; i < cookies.size(); i++) {
System.out.println(cookies.get(i).toString());
fw.write(cookies.get(i).getName()+"="+cookies.get(i).getValue()+";");
fw.flush();
}
}
readCookieToString();
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
System.out.println("----------------------------------------------------------------------");
result = EntityUtils.toString(response.getEntity(),"UTF-8");
System.out.println("----------------------------------------------------------------------");
EntityUtils.consume(response.getEntity());
return result;
}
}catch(IOException e){
loger.error(e.getMessage());
} catch (URISyntaxException e) {
e.printStackTrace();
}finally{
if(null!=request)
request.abort();
}
return null;
}
/**
* @param url
* @param params
* @return
*/
public synchronized String post(String url,Map<String,String> params,String ykss){
String result = "";
HttpPost request = null;
try{
List<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>();
for(Map.Entry<String, String> param : params.entrySet()){
pairs.add(new BasicNameValuePair(param.getKey(),param.getValue()));
}
request = new HttpPost(url);
request.setEntity(new UrlEncodedFormEntity(pairs,"UTF-8"));
setHeader(request,ykss);
HttpResponse response = httpclient.execute(request);
//读取cookie并保存文件
List<org.apache.http.cookie.Cookie> cookies = httpclient.getCookieStore().getCookies();
if (!cookies.isEmpty()) {
for (int i = 0; i < cookies.size(); i++) {
System.out.println(cookies.get(i).toString());
fw.write(cookies.get(i).getName()+"="+cookies.get(i).getValue()+";");
fw.flush();
}
}
readCookieToString();
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
System.out.println("----------------------------------------------------------------------");
result = EntityUtils.toString(response.getEntity(),"UTF-8");
System.out.println("----------------------------------------------------------------------");
EntityUtils.consume(response.getEntity());
return result;
}else if(statusCode == HttpStatus.SC_MOVED_TEMPORARILY
|| statusCode == HttpStatus.SC_MOVED_PERMANENTLY
|| statusCode == HttpStatus.SC_SEE_OTHER
|| statusCode == HttpStatus.SC_TEMPORARY_REDIRECT
){
Header [] headers = response.getHeaders("Location");
if (headers[0] != null) {
String newuri = headers[0].getValue();
if ((newuri == null) || (newuri.equals("")))
newuri = "/";
request.abort();
HttpGet gg = new HttpGet(newuri);
httpclient.execute(gg);
gg.abort();
}
}
}catch(IOException e){
loger.error(e.getMessage());
} finally{
if(null!=request)
request.abort();
}
return null;
}
/**
* @param url
* @param params
* @param updateFile
* @return
*/
public synchronized String postFile(String url,Map<String,String> params,File updatefile){
String result = "";
HttpPost request = null;
FileBody bin = null;
try{
if(null!=updatefile){
bin = new FileBody(updatefile);
}
MultipartEntity reqEntity = new MultipartEntity();
for(Map.Entry<String, String> entry : params.entrySet()){
reqEntity.addPart(entry.getKey(), new StringBody(entry.getValue(),Charset.forName("UTF-8")));
}
reqEntity.addPart("data", bin);
request = new HttpPost(url);
request.setEntity(reqEntity);
HttpResponse response = httpclient.execute(request);
//读取cookie并保存文件
List<org.apache.http.cookie.Cookie> cookies = httpclient.getCookieStore().getCookies();
if (!cookies.isEmpty()) {
for (int i = 0; i < cookies.size(); i++) {
System.out.println(cookies.get(i).toString());
fw.write(cookies.get(i).getName()+"="+cookies.get(i).getValue()+";");
fw.flush();
}
}
readCookieToString();
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
System.out.println("----------------------------------------------------------------------");
result = EntityUtils.toString(response.getEntity(),"UTF-8");
System.out.println("----------------------------------------------------------------------");
EntityUtils.consume(response.getEntity());
return result;
}else if(statusCode == HttpStatus.SC_MOVED_TEMPORARILY
|| statusCode == HttpStatus.SC_MOVED_PERMANENTLY
|| statusCode == HttpStatus.SC_SEE_OTHER
|| statusCode == HttpStatus.SC_TEMPORARY_REDIRECT
){
Header [] headers = response.getHeaders("Location");
if (headers[0] != null) {
String newuri = headers[0].getValue();
if ((newuri == null) || (newuri.equals("")))
newuri = "/";
request.abort();
HttpGet gg = new HttpGet(newuri);
httpclient.execute(gg);
gg.abort();
}
}
}catch(IOException e){
loger.error(e.getMessage());
} finally{
if(null!=request)
request.abort();
}
return null;
}
/**
* @param url
* @param params
* @param bb 文件分片
* @return
*/
public synchronized String postBytes(String url,Map<String,String> params,byte [] bb,String filename){
String result = "";
HttpPost request = null;
ByteArrayBody bin = null;
try{
if(null!=bb){
bin = new ByteArrayBody(bb,filename);
}
MultipartEntity reqEntity = new MultipartEntity();
for(Map.Entry<String, String> entry : params.entrySet()){
reqEntity.addPart(entry.getKey(), new StringBody(entry.getValue(),Charset.forName("UTF-8")));
}
reqEntity.addPart("data", bin);
request = new HttpPost(url);
request.setEntity(reqEntity);
HttpResponse response = httpclient.execute(request);
//读取cookie并保存文件
List<org.apache.http.cookie.Cookie> cookies = httpclient.getCookieStore().getCookies();
if (!cookies.isEmpty()) {
for (int i = 0; i < cookies.size(); i++) {
System.out.println(cookies.get(i).toString());
fw.write(cookies.get(i).getName()+"="+cookies.get(i).getValue()+";");
fw.flush();
}
}
readCookieToString();
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
System.out.println("----------------------------------------------------------------------");
result = EntityUtils.toString(response.getEntity(),"UTF-8");
System.out.println("----------------------------------------------------------------------");
EntityUtils.consume(response.getEntity());
return result;
}else if(statusCode == HttpStatus.SC_MOVED_TEMPORARILY
|| statusCode == HttpStatus.SC_MOVED_PERMANENTLY
|| statusCode == HttpStatus.SC_SEE_OTHER
|| statusCode == HttpStatus.SC_TEMPORARY_REDIRECT
){
Header [] headers = response.getHeaders("Location");
if (headers[0] != null) {
String newuri = headers[0].getValue();
if ((newuri == null) || (newuri.equals("")))
newuri = "/";
request.abort();
HttpGet gg = new HttpGet(newuri);
httpclient.execute(gg);
gg.abort();
}
}
}catch(IOException e){
loger.error(e.getMessage());
} finally{
if(null!=request)
request.abort();
}
return null;
}
private void readCookieToString(){
try {
while(fr.read(cookieString)!=-1);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void setHeader(HttpRequestBase request,String ykss){
request.setHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
request.setHeader("Accept-Encoding","");
request.setHeader("Accept-Language","zh-CN,zh;q=0.8");
request.setHeader("Content-Type","application/x-www-form-urlencoded");
request.setHeader("Origin","https://openapi.youku.com");
request.setHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36");
request.setHeader("Cookie",ykss);
}
@Override
protected void finalize() throws Throwable {
super.finalize();
fw.close();
fr.close();
}
public String cookieString(){
return String.valueOf(cookieString);
}
}
- 浏览: 172433 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (72)
- java (21)
- spring (3)
- struts2 (0)
- hibernate (0)
- sql (3)
- linux (20)
- java web (2)
- maven (1)
- cache (2)
- memcached api (1)
- 简化jdbc操作数据库 (2)
- JAVA 网络编程 (3)
- JAVA 多线程 (0)
- C&C++ (1)
- plsql (1)
- SVN常用命 (2)
- Hadoop2 (0)
- jvm (0)
- flex (0)
- html5 & css3 & ECMAscript (0)
- RFC 文档翻译 (0)
- http (0)
- Hadoop (1)
- android (0)
- BIG_DATA (2)
- v (0)
- linux php tomcat tengine (1)
最新评论
-
yuanliangding:
没整理。文章还有重复的部分。
Java虚拟机(JVM)中的内存设置详解 -
svsecomm:
...
转javassist用法 -
svsecomm:
[u][/u]
转javassist用法 -
hvang1988:
用惯了spirng,Guice的注解方式真有点不习惯反向的感 ...
Google Guice 5 web -
xaocaotanghui:
Java虚拟机(JVM)中的内存设置详解
发表评论
-
java annotation
2013-10-19 14:27 712元数据的作用 如果要对于元数据的作用进行分类,目前还没有明 ... -
sun directory server
2013-10-17 14:07 736Sun One Directory Server(LDAP) ... -
sun ldap
2013-10-16 16:07 413LDAP快速入门 1. LDAP简介 LDAP(轻 ... -
httpclient 上传文件 服务端解析
2013-10-07 11:07 848//commons-fileupload.jar common ... -
ffmpeg 视频加水印
2013-09-02 14:22 8271ffmpeg为视频添加水印watermark【转加补充】 ... -
ffmpeg args
2013-08-25 02:17 937先从Mencoder这个开始,将所有格式转AVI, RM ... -
socket 2
2013-06-11 20:57 975二、用于获得和设置Socket选项的getter和sette ... -
StringUtils
2012-12-31 01:45 1742StringUtils详细介绍 public stat ... -
转javassist用法
2012-10-15 17:15 13371Javassist是一个执行字 ... -
转 Quartz Cron
2012-10-02 10:28 1120Cron表达式 Quartz使用类似于Linux下的Cr ... -
apache db
2012-05-23 16:15 937queryRunner 摘抄 查询 runner ... -
Excel 色表
2012-05-11 16:09 1213按颜色菜单的色块位置排列 第1列 第2列 ... -
Google Guice 5 web
2012-05-11 16:09 31913 Web 和 Servlet 3.1 快速开始 我 ... -
Google Guice 5 aop
2012-05-02 23:06 15502 AOP 面向切面编程 2.1 AOP入门 在前面 ... -
Google Guice 4
2012-05-02 23:00 1893本章节继续讨论依赖注入的其他话题,包括作用域(scope ... -
Google Guice 3
2012-05-02 22:43 15491.3 更多话题 1.3.1 接口多实现 如果一个接 ... -
Google Guice 2
2012-05-02 22:30 11311.2 属性注入(Field Inject) 1.2. ... -
Google Guice 1
2012-05-02 22:23 15061. 依赖注入 1.1 类依赖注入 所谓的绑定就是将 ... -
Java虚拟机(JVM)中的内存设置详解
2012-04-13 17:03 32769Java虚拟机(JVM)中的内存设置详解 在一些 ... -
hashCode、hashCode()与HashSet集合
2011-09-09 14:02 1030hashCode、hashCode()与HashSet集合 ...
相关推荐
用c#实现的文件上传客户端,能显示上传进度.程序能正确运行!
本功能支持文件上传 下载,支持请求流,支持JSON、XML请求,本版本是httpclient 4,其它jar包自行下载
go-httpclient, golang的高级HTTP客户端 去 httpclient golang的高级HTTP客户端。特性可以链接的API直接文件上传超时HTTP代理CookieGZIP重定向策略安装go get github.com/ddliu/go-h
服务器端自己写,本示例为客户端代码,可以解决httpClient4乱码问题,是替代修改源码的最佳写法。
socket httpclient 这个功能经常需要用到,索性完整的总结一下,包括客户端服务端,上传至sae
直接上传文件 超时 HTTP代理 曲奇饼 邮编 重定向政策 取消(有上下文) 安装 go get github.com/ddliu/go-httpclient 快速开始 package main import ( "github.com/ddliu/go-httpclient" ) func main () { ...
本教程是继使用HttpClient调用Web API只有的补充教程,主要讲解了如何在WPF中异步调用Web API且不阻塞主线程。
再有如通过HTTP来上传文件呢?不需要头疼,这些问题有了“它”就很容易解决了! <br>我们不可能列举所有可能的顽固,我们会针对几种最常见的问题进行处理。当然了,正如前面说到的,如果我们自己使用java.net....
本实例封装了一个处理安卓客户端与服务器端交互的几个方法,对于中文乱码问题本实例也找到了解决方案.本例可以处理的场景如下: 1.与服务器端交互json数据. 2.Get方式与服务器端交互数据. 3.Post方式与服务器端交互...
http 、https客户端,实现了get方法和post方法,可以上传和下载文件
模拟客户端上传文件需要的jar,不是网页端上传,需要用到httpCilent和httpcore jar包
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,支持get Post 图片加载 文件上传。
这里我从了Golang SDK自带的net/http包提供的HTTP相关API,虽然本身提供了http.PostForm()、http.Post()以及http.Get()封装好的方法,但是在处理HTTPrequest的header和cookie处理缺乏灵活性,所以我重新将net/http...
代码是基于loopj (Asynchronous Http Client for Android) 的文件上传Demo,loopj 是基于 Apache's HttpClient 的异步http客户端。
主要介绍了使用java的HttpClient实现多线程并发的相关资料,需要的朋友可以参考下
流利的Http客户端 带有流畅API的.NET Standard的Http客户端,该API直观,易用且高度可扩展。 快速链接 | 产品特点 流利的API 高度可扩展 ...文件上传支持 安装 适用于 注意:1.x取决于.NET Standa
它支持表单参数、文件上传和自定义正文实体 无需丑陋的字符串连接即可轻松添加路由参数 本机支持基本身份验证 每个请求的可定制标头 完全了解代理。 可定制的超时时间 支持 gzip 通过一套全面的开发人员测试实现...
数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写...
简单的界面,用于构建查询字符串,POST请求,流式传输大型上传文件,流式传输大型下载文件,使用HTTP cookie,上传JSON数据等。 可以使用同一接口发送同步和异步请求。 使用PSR-7接口处理请求,响应和流。 这使您...