0

API を使用せずに (ics のコンテンツを取得するだけで)、Java プロジェクトで Google Agenda から ICS ファイルを取得したいと考えています。カレンダーは「パブリック」に設定されており、パラメーターからパブリック ical アドレスを取得します ( https://www.google.com/calendar/ical/perrine.lbc62%40gmail.com/public/basic.ics )。このアドレスをブラウザで試すと、ファイルをダウンロードできます (接続していない場合のイベント)。

しかし、たとえば curl コマンド ラインや Java コードを使用してコンテンツを取得しようとすると、うまくいきません。URL に接続できません。

カールは言う:カール:(7)ホストに接続できませんでした

Java コードは次のとおりです。

private ICalendar getICalWithUrl(String url) throws Exception {
    ICalendar iCal = null; 
    // Create an instance of HttpClient.
    HttpClient client = new HttpClient();
    // Create a method instance.
    GetMethod method = new GetMethod(url);
    // Provide custom retry handler is necessary
    method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));
    try {
      // Execute the method.
      int statusCode = client.executeMethod(method);
      if (statusCode != HttpStatus.SC_OK) {
        throw new Exception("Unable to get content at the url "+url+". Method failed: " + method.getStatusLine());
      }
      // Read the response body.
      byte[] responseBody = method.getResponseBody();
      iCal=BiweeklyManager.parse(new String(responseBody));
    } finally {
      // Release the connection.
      method.releaseConnection();
    }
    return iCal;  
}

スタックトレースは次のとおりです。

java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:519)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:394)
        at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:123)
        at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:81)
        at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:126)
        at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)

この場合、URL にアクセスできない理由と、アクセスするにはどうすればよいか、わかりますか?

回答ありがとうございます:)

4

1 に答える 1

0

あなたは企業環境にいますか?これは、特にブラウザからアクセスしていることを考えると、プロキシ設定の問題のように思えます。

--proxy オプションを指定して curl を試してください (たとえば、proxy を使用した Linux curl コマンドを参照してください) 。

于 2013-11-04T11:00:15.927 に答える