2月 19

php使用COMET实现服务器向浏览器推送数据

Comet技术可以让后台服务器在浏览器没有发起请求的情况下,向用户浏览器推送数据。这种技术比传统的ajax技术更具有时效性。传统的ajax中,服务器在数据发生变动时不能即时通知浏览器。用户的浏览器必须向后台发出请求(如点击一个链接或者使用持久的ajax),才能获得最新的数据。英文地址:http://www.zeitoun.net/articles/comet_and_php/start 继续阅读

10月 28

HttpClient 4.3教程 第六章 HTTP缓存


6.1.基本概念

HttpClient的缓存机制提供一个与HTTP/1.1标准兼容的缓存层 – 相当于Java的浏览器缓存。HttpClient缓存机制的实现遵循责任链(Chain of Responsibility)设计原则,默认的HttpClient是没有缓存的,有缓存机制的HttpClient可以用来临时替代默认的HttpClient,如果开启了缓存,我们的请求结果就会从缓存中获取,而不是从目标服务器中获取。如果在Get请求头中设置了If-Modified-Since或者If-None-Match参数,那么HttpClient会自动向服务器校验缓存是否过期。 继续阅读

10月 25

下载百度音乐无损品质音乐


使用百度音乐时,可以添加收藏,收藏后的音乐列表会保存在http://yinyueyun.baidu.com中,并且提供下载链接。用java简单写了个下载自己收藏音乐的程序,过程中发现对于VIP的无损音乐,下载链接已经给出来了,只是在前台做了限制,这个,这个。。。。(Bug已经报给百度音乐,这里的代码只为方便自己和代码分享)。

本来想用用户名和密码登陆百度账号,可是在登陆时需要传递一个参数callback,这个参数不是服务器发送过来的,怀疑是根据什么参数在本地计算出来的,看不太懂js,这个功能就没实现。

使用步骤如下: 继续阅读

10月 22

HttpClient4.3 教程 第五章 快速API


5.1.Easy to use facade API

HttpClient从4.2开始支持快速api。快速api仅仅实现了HttpClient的基本功能,它只要用于一些不需要灵活性的简单场景。例如,快速api不需要用户处理连接管理和资源释放。

下面是几个使用快速api的例子:

    // 执行一个get方法,设置超时时间,并且将结果变成字符串
    Request.Get("http://www.yeetrack.com/")
            .connectTimeout(1000)
            .socketTimeout(1000)
            .execute().returnContent().asString(); 继续阅读 
10月 17

HttpClient4.3教程 第四章 HTTP认证


HttpClient既支持HTTP标准规范定义的认证模式,又支持一些广泛使用的非标准认证模式,比如NTLM和SPNEGO。

4.1.用户凭证

任何用户认证的过程,都需要一系列的凭证来确定用户的身份。最简单的用户凭证可以是用户名和密码这种形式。UsernamePasswordCredentials这个类可以用来表示这种情况,这种凭据包含明文的用户名和密码。

这个类对于HTTP标准规范中定义的认证模式来说已经足够了。

    UsernamePasswordCredentials creds = new UsernamePasswordCredentials("user", "pwd"); 继续阅读 
10月 13

HttpClient4.3教程 第三章 Http状态管理



最初,Http被设计成一个无状态的,面向请求/响应的协议,所以它不能在逻辑相关的http请求/响应中保持状态会话。由于越来越多的系统使用http协议,其中包括http从来没有想支持的系统,比如电子商务系统。因此,http支持状态管理就很必要了。

当时的web客户端和服务器软件领先者,网景(netscape)公司,最先在他们的产品中支持http状态管理,并且制定了一些专有规范。后来,网景通过发规范草案,规范了这一机制。这些努力促成 RFC standard track制定了标准的规范。但是,现在多数的应用的状态管理机制都在使用网景公司的规范,而网景的规范和官方规定是不兼容的。因此所有的浏览器开发这都被迫兼容这两种协议,从而导致协议的不统一。

3.1.Http cookies

所谓的Http cookie就是一个token或者很短的报文信息,http代理和服务器可以通过cookie来维持会话状态。网景的工程师把它们称作“magic cookie”。 继续阅读

10月 11

CloseableHttpClient加载证书来访问https网站

对安全性有要求的网站一般使用https来加密传输的请求和响应。https离不开证书,关于证书不在多说。Apache的HttpClient支持https,下面是官方的样例程序,程序中使用了my.store这个文件,这个文件不是网站的证书,而是一份包含自己密码的自己的证书库。这个文件是需要自己生成的,使用jdk中的keytool命令可以很方便的生成my.store文件。步骤如下(以支付宝为例):

  1. 浏览器(以chrome为例)访问https://www.alipay.com/,点击域名左侧的小锁,可以查看支付宝的证书信息

    继续阅读