私はちょっとした実験をしていて、YouTubeのページをつかんで、最高品質のMP4リンクを返してから、これをHTML 5のビデオ要素で再生します。URLをJavascriptでリクエストし、Javaアプレットを使用してURLコンテンツを取得し、Javascriptに戻りますか?
(MP4リンクがIPアドレスにロックされている)今私はURLのコンテンツ(YouTubeの)を取得するためのcURLとPHPを使用していたが、それは私のローカルサーバー上で動作します。私は、Javaアプレット以外のクロスドメインルールのためにページコンテンツを取得する他の方法は考えられません。
URLの内容を返すJavaアプレットを作成しました。私は方法の開始でのgetURLを(実行する場合さて、私は、私のページに私のアプレットを持って
の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;
}
}
)それは私がのgetURLを呼び出す場合、正しくURLのコンテンツを返しますが、しますビンを呼び出し、この
Javascriptを
var URLFetcherApplet = document.getElementById('URLFetcher');
URLFetcherApplet.bingo();
のようなJavaScriptからメソッドJavaでgo()を実行すると、Javaコンソールにエラーが表示されます。 「java.security.AccessControlException:アクセスが拒否されました ヌル(java.net.SocketPermission www.youtube.com:80解決、接続)」私は、起動時に同じメソッドを実行するのであれば
を()、それは動作しますが、しかし、もし私がJavascriptを使ってそれにアクセスしようとすると、それはなぜ失敗するのでしょうか?
おかげ
はあなたが実際に署名せずにJavaでURLを取得することができてもよろしいです:-)例外を飲み込むていません?私はクロスドメインルールが署名のないアプレットに適用されると考えています。 –
アプレットは署名されていますが、ソースをコンソールに出力してテストしたので、URLのソースを正しく取得します。 –