天天看點

Sina微網誌開放API代理設定

使用sina微網誌API時由于我這裡上網是通過代理的,是以一直提示如下問題:

Caused by: java.net.SocketTimeoutException: connect timed out

我知道肯定是代理的問題,但剛接觸sina API,實在無從下手,最後看到一篇博文,基本理清了問題症結。

sina API for Java 使用了httpclient連接配接,預留了設定代理的代碼,但是他設定代理的代碼調用了這句

client.getHostConfiguration().setProxy(proxyHost, proxyPort);

而在

org

.

apache commons httpclient HostConfiguration

中源代碼為

 public synchronized void setProxy(final String proxyHost, int proxyPort) {

        this.proxyHost = new ProxyHost(proxyHost, proxyPort); 

 }

ProxyHost中源代碼為

 public ProxyHost(final String hostname, int port) {

        super(hostname, port, Protocol.getProtocol("http"));

可以看出預設初始化為http協定,而在weibo4j.http.HttpClient

public HttpClient(int maxConPerHost, int conTimeOutMs, int soTimeOutMs, int maxSize)中有代碼

Protocol myhttps = new Protocol("https", new MySSLSocketFactory(), 443);

Protocol.registerProtocol("https", myhttps);

表明這裡設定了協定為https,是以我們要做的就是要麼将上面這兩句注釋掉,預設使用http協定,要麼在代理設定時設定協定為https。