- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在做一个小实验,它会抓取一个 YouTube 页面,并返回最高质量的 MP4 链接,然后在 HTML 5 视频元素中播放它。
<小时/>现在我使用 PHP 和 cURL 来获取 URL 内容 (YouTube),但这仅适用于我的本地服务器(MP4 链接被锁定到 IP 地址)。由于跨域规则,除了 Java 小程序之外,我想不出任何其他方法来获取页面内容。
所以我构建了一个应该返回 URL 内容的 Java 小程序。
Java
import java.applet.Applet;
import java.awt.*;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.HttpURLConnection;
import java.net.URL;
//import java.net.SocketPermission;
//import java.net.URLDecoder;
//import java.net.URLEncoder;
//import java.util.Locale;
//import netscape.javascript.JSObject;
public class URLFetcherabc extends Applet
{
public String URLContent = "Currently empty";
public void init()
{
System.out.println("Ready to recieve URL");
}
public void paint(Graphics g) {
g.drawString("Java loaded.", 0, 10);
}
public void start()
{
String container = getURL("http://www.youtube.com/watch?v=LQ0AFriC7ZM&Bingbv", "GET"); //<-- This works
System.out.println(container); //<-- This works
URLContent = container;
}
public void bingo()
{
String container = getURL("http://www.youtube.com/watch?v=LQ0AFriC7ZM&Bingbv", "GET");
System.out.println(container);
URLContent = container;
}
public String getURL(String url, String httpMethod)
{
try
{
URL u = new URL(url);
HttpURLConnection conn = (HttpURLConnection)u.openConnection();
conn.setRequestMethod(httpMethod);
conn.setRequestProperty("User-Agent", "");
InputStream is = conn.getInputStream();
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
for (int bytesRead = 0; (bytesRead = is.read(buffer)) != -1; ) {
output.write(buffer, 0, bytesRead);
}
URLContent = output.toString();
return URLContent;
} catch (Exception e) {
System.out.println(e);
}return null;
}
}
现在我的小程序已经出现在我的页面上,如果我在 start() 中运行 getURL 方法,它将正确返回 URL 内容,但是,如果我像这样从 Javascript 调用 getURL 方法
Javascript
var URLFetcherApplet = document.getElementById('URLFetcher');
URLFetcherApplet.bingo();
在 Java 中调用 Bingo(),然后我在 Java 控制台中收到错误。“java.security.AccessControlException:访问被拒绝(java.net.SocketPermission www.youtube.com:80 连接,解析)空”
因此,如果我在 start() 上运行相同的方法,那么它就可以工作,但是如果我尝试通过 Javascript 访问它,它就会失败,关于为什么要这样做有什么想法吗?
谢谢
最佳答案
有一件事是肯定的:你有一个空的 catch block ,所以你正在吞噬任何异常,隐藏它们。既然你说函数返回 null,最可能的情况是 try-catch block 内的某个地方发生异常。将代码更改为:
} catch (Exception e) {
throw new RuntimeException(e);
}
看看 java 控制台上会出现什么。
编辑:如果您还没有准备好听取好的建议,请不要提问。我 99.999% 确信错误确实出在你的 java 代码中(无论你在评论中说什么),并且添加正确的错误报告将立即给你真正的答案。添加 throw new RuntimeException(e) 并查看控制台。
我敢打赌,您会看到某种“未经授权的操作”错误,因为您的小程序可能没有签名(至少您没有写任何有关它的内容),因此同源策略仍然适用(如果它没有)申请未签名的小程序,Java 将是一个巨大的安全漏洞)。
如果事实证明我是对的,我希望你接受我的回答,即使你认为我粗鲁:-)
第二次编辑:我检查了你的代码(粘贴到 Netbeans 中,稍作编辑,编译),它运行完美(firefox、explorer - 都在 Windows 上)并且你的症状似乎发生了变化(你要么说它返回 null,或者返回未定义,或者您根本无法调用它) - 我有最后一个想法。人们常犯的一个错误是在对象(如小程序或 Flash)真正加载之前调用它们。你在哪个阶段执行你的javascript?您确定小程序已加载吗?如果添加超时(几秒钟)或通过某个按钮上的“onclick”执行该函数会怎样?有什么改变吗?你使用的是什么浏览器?你的javascript是什么?什么操作系统?哪个插件版本?除非我们能够重现该问题,否则我们无法提供帮助。
第三次编辑:(经过问题作者的一些实验);将 javascript 调用包装到 PrivilegedgedAction 中,例如如下所示:
public String callFromJs(final String url, final String method){
return AccessController.doPrivileged(new PriviledgetAction<String>(){
public String run(){
return getUrl(url, method);
}
});
}
并且不要接受异常:-)
关于java - 在 Javascript 中请求 URL,使用 Java Applet 获取 URL 内容,返回 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4708924/
我正在为我的按钮使用 onClick 功能。我的按钮代码如下所示: Button 1 Button 2 我的 JS 函数如下所示: function fadeNext(selectedId, spee
首先,我想提一下,我理解每个人在不提供至少一些试验或错误的情况下提出问题的感受,但这纯粹是一种知识需求,话虽如此,我会去提前问。 我一直无法弄清楚如何将保存在 MySQL 表中的 600-1000 个
我想做的事情有点令人困惑,而且我英语不太好,所以我先把代码贴在这里,这样你就可以很容易地理解: 以下是表单内容: Testing for Stackoverflow Option1
我学习 SDL 二维编程已有一段时间了,现在我想创建一个结合使用 SDL 和 OpenGL 的程序。我是这样设置的: SDL_Init(SDL_INIT_VIDEO); window = SDL_Cr
我创建了 2 个 data-* 标签。数据类别和数据标签。单击 href 标签后,我想复制该数据类别和数据标签以形成输入。我的代码是:
我想用 CSS 换行。我正在使用内容。 td:before { content: "Test\A Test2"; } 它不工作。如何正确
这个问题已经有答案了: Java Class that implements Map and keeps insertion order? (8 个回答) 已关闭 6 年前。 我有一个 HashMap
我正在尝试使用 JMeter 执行端到端测试。测试涉及写入SFTP文件夹并从另一个SFTP文件夹读取写入操作生成的文件。 我能够使用 JMeter SSH SFTP 插件连接到 SFTP 文件夹,并能
您好,我有带有标准服务器端 Servlet 的 GWT 客户端。 我可以从 GWT 客户端上传文件并在服务器端读取其内容 我可以将其作为字符串发送回客户端 但是 我有 GWT FormPanel与操作
我在 Plone 4.3.9 中创建了一个自定义类型的灵巧性,称为 PersonalPage,必须只允许在特定文件夹中使用 成员文件夹/用户文件夹 . 在他的 FTI 中,默认情况下 False .
在新(更新)版本的应用程序中更改小部件布局的最佳做法是什么?当新版本提供更新、更好的小部件时,如何处理现有小部件? 最佳答案 我认为您必须向用户显示一个弹出窗口,说明“此版本中的新功能”并要求他们重新
在我的应用程序中,我使用支持 View 寻呼机和 PagerTabStrip。进入查看寻呼机我有一些 fragment ,进入其中一个我正在使用支持卡片 View 。运行应用程序后,所有卡片 View
我有以下布局文件。基本上我有谷歌地图,在左上角我有一个 TextView,我需要在其中每 15 秒保持一次计数器以刷新 map 。布局很好。
我使用如下结构: HashMap > > OverallMap 如果我这样做: OverallMap . clear ( ) clear() 丢弃的所有内容(HashMap 对象、Integer 对
我在数据库中有 1000 张图像。在页面加载时,我随机显示 60 张图片,当用户滚动时,我通过 AJAX 请求添加 20 张图片。 第一种方法 我所做的是将所有图像加载到一个容器中,然后隐藏所有图像并
我正在使用 woocommerce 创建一个网上商店。 我想在每个产品上添加一个包含产品信息的表格,例如颜色、交货时间等等。 但是当我添加这张表时。本产品消失后的所有内容。 我的表的代码: td {
This question already has an answer here: What does an empty value for the CSS property content do?
因此,我正在与我的 friend 一起为 Google Chrome 开发一个扩展程序,对于大多数功能(即日历、设置等),我们打开一个模式,这样我们就不必重定向到另一个页面。当您在内容之外单击时,我们
我将可变高度的 CSS 框设置为在更大的 div 中向左浮动。现在我想添加一个标题,其中文本在框的左侧垂直显示(旋转 90 度),如下面的链接所示(抱歉还不能发布图片)。 http://imagesh
相关页面位于 www.codykrauskopf.com/circus 如果您查看我页面的右侧,在半透明容器和浏览器窗口边缘之间有一个间隙。我看了看,出于某种原因,wrap、main、content
我是一名优秀的程序员,十分优秀!