2012-10-06 115 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