2013-12-09 103 views
0

我正在使用couchdb4j与couchDB建立连接。它的正常工作时,即时通讯连接到我的本地数据库,这是该代码:Java couchdb4j数据库连接

Session LocalSession= new Session("localhost", 5984); 

,但我试图让这个站点的连接:stockquotetest.cloudant.com但它不工作,任何人都可以发现问题?当我运行这行代码选中基本身份验证方案

我也得到这个

java.net.UnknownHostException: https 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at sun.security.ssl.SSLSocketImpl.connect(Unknown Source) 
at sun.security.ssl.SSLSocketImpl.<init>(Unknown Source) 
at sun.security.ssl.SSLSocketFactoryImpl.createSocket(Unknown Source) 
at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:82) 
at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:127) 
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707) 
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387) 
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) 
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) 
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323) 
at com.fourspaces.couchdb.Session.http(Session.java:364) 
at com.fourspaces.couchdb.Session.get(Session.java:325) 
at com.fourspaces.couchdb.Session.getDatabaseNames(Session.java:167) 
at CouchDBTest.ConnectDB(CouchDBTest.java:41) 
at Home$4.actionPerformed(Home.java:166) 
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
at java.awt.Component.processMouseEvent(Unknown Source) 
at javax.swing.JComponent.processMouseEvent(Unknown Source) 
at java.awt.Component.processEvent(Unknown Source) 
at java.awt.Container.processEvent(Unknown Source) 
at java.awt.Component.dispatchEventImpl(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Window.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$200(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue$4.run(Unknown Source) 
at java.awt.EventQueue$4.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 

 Session NewSession = new Session("https://user:[email protected]/", 80, true); 
+0

,你必须在80端口连接(或https为443) –

+0

嘿感谢您的帮助,但即时通讯STIL得到同样的错误 \t \t会议newsession的=新会议(“stackis.cloudant.com/”,443,“ stackis“,”cloudant“); – user1959214

+0

什么错误?您所说的INFO消息根本不是错误 –

回答

0

Session NewSession = new Session("stockquotetest.cloudant.com/", 5984, "user", "pass"); 

我得到这个错误:INFO我重现了这一点,并在我开始工作之前遇到了另一个问题。首先,6-parameter constructor for Session就是你追求:

public Session(String host, int port, String user, String pass, boolean usesAuth, boolean secure) { 

在你上面给的例子,这会工作:

new Session("stockquotetest.cloudant.com", 443, "user", "pass", true, true); 

这是因为如果你不设置secure为真,URL will not be constructed with https


之后是工作,下一个错误是Databaseassuming that update_seq is an int。 Cloudant将返回一个字符串update_seq,而不是一个整数。我将Database类中的字段,响应解析和获取方式从int更改为String,以使代码适用于我。

+0

从技术上讲,* 6 *参数构造函数,而不是5. – Bdoserror

+0

@Bdoserror谢谢!更新 – sghill

0

试试这一个...确保你在couchdb4j库中为couchdb连接起诉。

Session studentDbSession = new Session(“localhost”,5984);

Database studentCouchDb = studentDbSession.getDatabase(“database_name”);

希望这会帮助你。