【问题标题】:A Desktop App in Java using Facebook API (java.net.UnknownHost Exception)使用 Facebook API 的 Java 桌面应用程序(java.net.UnknownHost 异常)
【发布时间】:2012-08-20 20:41:38
【问题描述】:

我正在尝试使用 google 提供的 facebook API 在 java 中构建桌面应用程序。我有很多问题:

1) 我必须使用套接字编程吗? (因为我是新手,我还没有:/)

2) 当我尝试创建 auth_token 时,它在 facebook api 中给出了 java.net.UnknownHost 异常。

任何额外的信息都会有很大帮助。 :)

java.lang.RuntimeException: java.net.UnknownHostException: api.facebook.com
at com.google.code.facebookapi.BasicClientHelper.runtimeException(BasicClientHelper.java:123)
at com.google.code.facebookapi.ExtensibleClient.callMethod(ExtensibleClient.java:538)
at com.google.code.facebookapi.ExtensibleClient.callMethod(ExtensibleClient.java:446)
at com.google.code.facebookapi.ExtensibleClient.auth_createToken(ExtensibleClient.java:860)
at com.google.code.facebookapi.SpecificReturnTypeAdapter.auth_createToken(SpecificReturnTypeAdapter.java:73)
at facebookConnection.FbStartingPoint.<init>(FbStartingPoint.java:26)
at sourcepoint.FirstWindow$1.actionPerformed(FirstWindow.java:41)
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$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$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)
    Caused by: java.net.UnknownHostException: api.facebook.com
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at com.google.code.facebookapi.ExtensibleClient.postRequest(ExtensibleClient.java:583)
at com.google.code.facebookapi.ExtensibleClient.callMethod(ExtensibleClient.java:534)
... 41 more

【问题讨论】:

    标签: java facebook api


    【解决方案1】:

    听起来您的机器无法访问api.facebook.com 主机。您是否使用代理连接到 Internet?

    尝试使用 telnet 确保整台计算机都可以连接到互联网(不仅仅是您的代理配置驱动程序):

    > telnet api.facebook.com 80
    Trying 66.220.149.99...
    Connected to api.facebook.com.
    Escape character is '^]'.
    GET /
    
    HTTP/1.1 400 Bad Request
    Content-Type: text/html
    Date: Sat, 25 Aug 2012 16:29:53 GMT
    Connection: close
    Content-Length: 134
    
    <HTML><HEAD>
    <TITLE>400 Bad Request</TITLE>
    </HEAD><BODY>
    <H1>Method Not Implemented</H1>
    Invalid method in request<P>
    </BODY></HTML>
    Connection closed by foreign host.
    

    【讨论】:

    • 是的,我使用 LDAP id 和密码在我的大学代理后面
    • @Scoop:那是你的问题。您需要设置 Facebook API 以使用代理连接(使用 LDAP ID/PASSWORD 和所有内容)。
    【解决方案2】:

    api.facebook.com 是已弃用的旧 REST API 的端点;你可能应该连接到graph.facebook.com

    尽管如此,如果您使用的是旧版 API,api.facebook.com 应该是可解析的并且仍然可以工作。

    这几乎肯定是您的网络、防火墙、计算机、DNS 或 JDK 的问题 - 这是您连接到 Facebook 的代码的问题,而不是 Facebook 方面的问题

    【讨论】:

    • 我在使用用户名密码的代理服务器后面。那么我必须在我的代码中进行哪些修改。我必须使用套接字编程吗??
    • 虽然我在 Java 中设置了代理,但错误仍然存​​在:/
    猜你喜欢
    • 2014-05-03
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2015-04-23
    相关资源
    最近更新 更多