使用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。