2017-05-05 18 views
0

讀取數據的CouchDB問題我正在使用CouchDB 2.0.0版本。 我想從使用java代碼的API檢索數據。 在瀏覽器中點擊時的URL工作正常,但不會在eclipse中顯示數據。 用於例如,在使用下列網址:。關於從API的

http://<ip-address>/_node/[email protected]/_stats 

,但我得到,而這樣做的以下異常: java.net.SocketException異常:從服務器

at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:802) 
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:663) 
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:799) 
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:663) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1335) 

回答

0

有點意外的文件結尾晚了點。我也遇到過這個問題。服務器實際上響應錯誤,因爲從java調用時,必須指定授權類型(通常爲Basic),以及使用Base64編碼的用戶信息。它適用於瀏覽器和捲曲,因爲它們都添加了請求屬性。

假設你使用的是:作爲跟隨

http://<ip-address>/_node/[email protected]/_stats 

你的連接可能配置:

HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
connection.setDoOutput(true); 
connection.setDoInput(true); 
connection.setConnectTimeout(2000); // Two seconds (or any timeout you decide) timeout 
// Other user agent can be used. I've also tried curl/7.51.0 as user agent as well 
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"); 
connection.setRequestProperty("charset", "utf-8"); 
connection.setRequestProperty("Accept-Charset", "utf-8"); 
connection.setRequestProperty("Content-type", "application/json"); 
if (url.getUserInfo() != null && !"".equals(url.getUserInfo())) { 
    // userInfo MUST be Base64 encoded 
    connection.setRequestProperty("Authorization", "Basic " + Base64.encodeBase64String(url.getUserInfo().getBytes())); 
} 
connection.setUseCaches(false); 

希望這有助於。