2012-10-06 73 views
3

我必须做出一个功能,必须进入一个公共网址,它会返回一个纯文本至极。Http进入外部网址

取决于我将作出验证。

我尝试使用dojo ajax get方法,但由于是不同的域,它将无法工作(仅在资源管理器上)。

如何将该呼叫转到外部域并管理答案。

该网址将是这样的。

http://my.socket:8080/?option1=1&option2=2 

它可以与ajax或只是一个java类。

回答

2

AJAX是工作在客户端,这意味着你不能让外国域Ajax调用 由于http://en.wikipedia.org/wiki/Same_origin_policy

这将是很好的技术,如果你写的是得到你的应用程序的服务器端 打电话,让阿贾克斯呼叫您的应用程序,它将充当网关并从远程服务器获取数据

+0

听起来货,我如何管理我从收到的网址在我的服务器端的文本任何想法。我可以做出这样的事情,以击中外部网址,但我如何管理这个网站。 URL url = new URL(“http:// socket。”); \t \t URLConnection conn = url.openConnection(); \t \t conn.setDoOutput(true); \t \t \t \t \t \t的BufferedReader在新=的BufferedReader(新的InputStreamReader(conn.getInputStream())); \t \t \t \t in.close(); – user1725253

+0

基本上你需要编写代码,当你导航到 yourdomain.com/gatewaycode/ mayeymoreparams 将被执行,并将打印外部域返回的数据 如果你将管理,那么你就会打电话给yourdomain.com ajax/gatewaycode/maybemoreparams 我错过了你的问题? 你在服务器端使用java吗? – MySqlError

+0

是的应用程序是在java中,我喜欢这样的想法,在我的服务器端进行调用,然后用ajax调用我的同一个域,我不知道如何从我的服务器端进行调用。 – user1725253

0

由于相同的来源策略,您不能在跨域执行简单的ajax调用。

你可以调用你自己的服务器页面驻留在同一个域上,该页面可以做HTTP获取并获取你的内容。

,或者您可以使用YQL

var url = 'http://my.socket:8080/?option1=1&option2=2'; // website you want to scrape 
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + url + '"') + '&format=json&callback=?'; 
$.getJSON(yql,function(data){ 
    if(data.query.results){ 
     var result = data.query.results.double.content.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, ''); 
     alert(result); 
    } 
}); 

Reference

+0

这也可以管理纯文本和XML的答案? – user1725253

+0

我不知道纯文本(你可以在你的末尾过滤),但你可以得到xml。只需将此行'select * from html ....'更改为'select * from xml ....' – Jashwant