2011-04-14 45 views
0

我的GWT应用程序需要使用此处描述的基于浏览器的上传来上传到YouTube http://code.google.com/apis/youtube/2.0/developers_guide_java.html#Browser_based_Upload 我需要YouTube重定向到同一页面我上传完成后上传视频,所以我可以通知用户上传已完成。如何在GWT中的同一页面的两个实例之间进行通信

出于这个原因,我设置这样的形式操作(ytPost被用来存储令牌和从YouTube获得PostUrl)。

form.setAction(ytPost.getPostUrl()+ + Window.Location.getHref()的toString() “nexturl =?”。);我发现在Eclipse中看到这种情况发生在一个名为 - 守护线程[Mozilla/5.0(Windows; U; Windows NT 6.0; en-US; rv:1.9.2.16)的fyiapp的代码服务器中。Gecko/20110319 Firefox/3.6.16(.NET CLR 3.5.30729; .NET4.0C)http://127.0.0.1:8888/FyiApp.html?gwt.codesvr=127.0.0.1:9997#tab=plan&item=69 @ _brp1HJ [BO $ Y〜rSZ](正在运行)

问题出在YouTube重定向回到同一个页面我发起了上传,但是GWT实例化了一个新线程 -

守护线程[Mozilla/5.0(Windows; U; Windows NT 6.0; en-US; rv:1.9.2.16)中fyiapp的代码服务器Gecko/20110319 Firefox/3.6.16(.NET CLR 3.5.30729; .NET4.0C)http://127.0.0.1:8888/FyiApp.html?gwt.codesvr=127.0.0.1:9997#tab=plan&item=69 @ _br p1HJ [BO $ Y〜rSZ](暂停(PostEditor中第104行的断点))

因此,即使我在技术上位于从我发起的“相同页面”代码明智(GWT客户端)最初的YouTube上传请求,此页面没有任何状态,我需要通知用户YouTube上传已完成。我可以发出Window.alert,或写入状态栏,但所有的小部件都是全新的。

两个线程继续从这点上运行。

我应该怎么做要么能够使用YouTube的上载启动或如果这是不可能的,我应该如何通过同一个浏览器页面的两个实例之间的信息在同一线程上重定向?

回答

1

怎么样引入一个额外的参数,成品= TRUE |假使你的“的setAction”看起来像:

form.setAction(ytPost.getPostUrl()+ "?nexturl=" + 
    Window.Location.getHref().toString()+"&finished=true"); 

使参数“说完=真正的”传递到您的网页上载完成,它可以在它的反应。

+0

谢谢你,萨沙。 我的问题是不理解如何沟通代表同一页面的两个不同的线程。 一个线程是原始线程 - 它正在等待答案,并在上载完成时检查由YouTube注入的URL字符串中的额外参数。 另一个线程由GWT在收到来自YouTube的GET(重定向)请求时创建。这一个在YouTube注入的URL中有额外的参数。所以我的问题归结为:我应该怎么做才能将这些参数传递回原来的线程,我在等待它们? – owllf 2011-04-16 13:58:23

+0

Larisa,你可以使用java.util.concurrent.FutureTask在线程之间异步传递参数。这就是说,在等待异步通信的同时保持主线程打开可能不是一个难题。这可能会导致线程服务器瘫痪。 – 2011-04-20 06:03:59

+0

我意识到我采取了错误的做法。我需要一个Servlet来捕获服务器上来自YouTube的重定向,并将上传视频的返回ID(附加到URL)存储在数据库中。此外,我需要定期从我启动YouTube上传的页面中检查数据库中的这些信息。谢谢你的帮助! – owllf 2011-04-25 16:26:52

相关问题