這不是一個點擊應如何連接到使用Ektorp託管Cloudant數據庫連接到Cloudant DB。我在Eclipse中通過新的Maven m2eclipse集成(這是非常甜)使用EKTORP 1.1。我正在努力尋找除javadoc之外的良好CouchDB/Cloudant/Ektorp文檔。的UnknownHostException嘗試通過EKTORP
我試圖從他們的main page工作得到樣品EKTORP API例如:
HttpClient httpClient = new StdHttpClient.Builder()
.host("localhost")
.port(5984)
.build();
CouchDbInstance dbInstance = new StdCouchDbInstance(httpClient);
CouchDbConnector db = new StdCouchDbConnector("mydatabase", dbInstance);
db.createDatabaseIfNotExists();
不要緊,我用它來構建HttpClient的使用,我總是得到下面的UnknownHostException錯誤。我試過這些URL主機:HTTPS/HTTP://cloudant.com/db/_session和HTTPS/HTTP:// [用戶名] .cloudant.com
什麼端口號?用戶名和密碼是否應包含在StdHttpClient.Builder()中?
下面是完整的錯誤 - 它的失敗在createDatabaseIfNotExists()調用,但我不自信CouchDbConnector變量是正確的。
Exception in thread "main" org.ektorp.DbAccessException: java.net.UnknownHostException: https://cloudant.com/db/_session
at org.ektorp.util.Exceptions.propagate(Exceptions.java:19)
at org.ektorp.http.StdHttpClient.executeRequest(StdHttpClient.java:104)
at org.ektorp.http.StdHttpClient.get(StdHttpClient.java:42)
at org.ektorp.http.RestTemplate.get(RestTemplate.java:21)
at org.ektorp.impl.StdCouchDbInstance.getAllDatabases(StdCouchDbInstance.java:61)
at org.ektorp.impl.StdCouchDbConnector.createDatabaseIfNotExists(StdCouchDbConnector.java:256)
at com.codegouge.examples.App.main(App.java:30)
Caused by: java.net.UnknownHostException: https://cloudant.com/db/_session
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850)
at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201)
at java.net.InetAddress.getAllByName0(InetAddress.java:1154)
at java.net.InetAddress.getAllByName(InetAddress.java:1084)
at java.net.InetAddress.getAllByName(InetAddress.java:1020)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:126)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
at org.ektorp.http.StdHttpClient.executeRequest(StdHttpClient.java:96)
感謝馬特。從主機中刪除「http/s」使我能夠通過端口5984連接併成功執行createDatabaseIfNotExists()調用。但是,使用端口443拋出java.net.SocketException。我必須想象Ektorp可以處理HTTPS。我會繼續尋找。乾杯! – Ryan 2011-04-23 15:35:03
所以我意識到我需要在構建我的HttpClient時包含「.enableSSL(true)」和「.relaxedSSLSettings(true)」,但現在我得到一個IllegalStateException。 – Ryan 2011-04-23 16:18:56
@Ryan好吧,至少進展。 :)是的,那些看起來像正確的方法來調用。 Ektorp站點仍然指向1.0.2 javadoc,所以我沒有注意到它們(SSL支持在1.1中似乎是新的)。如果您能夠更新您的問題以包含可能有用的異常堆棧跟蹤。 – 2011-04-23 17:46:36