首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:处理webcal协议

Java:处理webcal协议
EN

Stack Overflow用户
提问于 2013-04-12 17:51:21
回答 2查看 1.2K关注 0票数 1

我正在尝试下载-甚至只是打开一个流-到位于webcal://www.omewhere.com/foo?etc=bar的日历。

当我执行以下操作时,Java URL类抛出了一个“未知协议: webcal”异常:

代码语言:javascript
复制
URL url = new URL("webcal://...");

即使web资源位于webcal://协议之后,我如何告诉URL类它应该只使用HTTP作为传输协议?

或者,在任何情况下,我如何下载我的日历?

请记住,如果我试图将"webcal://“替换为"http://"”,那么我呼叫的web服务器不会提供日历。

EN

回答 2

Stack Overflow用户

发布于 2013-04-12 19:30:03

据我所知,苹果对"webcal“的使用实际上只是”http“的同义词;所以它应该是有效的。

票数 2
EN

Stack Overflow用户

发布于 2016-03-06 15:07:23

"webcal://“是一个非官方的URI方案,请参阅维基百科上的article

因此,它可能代表一个或另一个后端实现-例如,您正在调用的web服务器可能正在使用所提到的任何协议实现,例如WebDAVCalDAVOpenDAV

但是,如果您想要的只是读取文件的内容,那么任何HTTP客户端都应该做到这一点,因为上面提到的协议都是基于HTTP的。

下面是一个关于如何使用URL自己的机制打开HttpURLConnection读取远程iCal的示例:

代码语言:javascript
复制
    URL calendarURL = new URL("http://www.facebook.com/ical/b.php?uid=myUID&key=myKEY");
    URLConnection connection = calendarURL.openConnection();
    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    while (reader.ready()) {
        System.out.println(reader.readLine());
    }

如您所见,我已经将原始URL从

webcal://www.facebook.com/ical/b.php?uid=MYUID&key=MYKEY

http://www.facebook.com/ical/b.php?uid=MYUID&key=MYKEY

,因为我们使用的是java.net.URL,而缺省情况下Java不识别这个协议。如果您想要联系的web服务器确实只通过webcal://提供内容,那么您可能需要使用适当的客户端(基于服务器使用的确切协议实现)。例如,有许多提供WebDAV客户端功能的框架,如JackRabbitSardine等。

如果您提供有关服务器类型的更多信息,我们可以进一步挖掘。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15968184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档