使用api提供的訪問令牌僅適用於客戶端ip,因此我試圖向客戶端上的該外部站點發出請求並將JSON響應返回給我的服務器。問題是如何在客戶端上創建請求並存儲JSON,以便我可以將其發送到服務器。從vaadin客戶端向外部服務器發出請求,並將JSON響應返回給我的服務器
謝謝
使用api提供的訪問令牌僅適用於客戶端ip,因此我試圖向客戶端上的該外部站點發出請求並將JSON響應返回給我的服務器。問題是如何在客戶端上創建請求並存儲JSON,以便我可以將其發送到服務器。從vaadin客戶端向外部服務器發出請求,並將JSON響應返回給我的服務器
謝謝
看看Vaadin的
整合JavaScript組件和擴展
這裏:
https://vaadin.com/docs/-/part/framework/gwt/gwt-javascript.html#gwt.javascript.rpc
您可以創建一個JavaScript連接或組件,然後可以使用,使像RPC是如此:
@JavaScript({"mycomponent-connector.js"})
public class MyComponent extends AbstractJavaScriptComponent {
public MyComponent(){
// when you create the component
// add a function that can be called from the JavaScript
addFunction("returnResponse", new JavaScriptFunction() {
@Override
public void call(JsonArray arguments) {
String response = arguments.getString(0));
// do whatever
}
});
}
// set up a way to make the request
public void makeRequest(String url) {
callFunction("makeRequest", url);
}
}
與JavaScript文件mycomponent-connector.js
(使用XMLHttpRequest
爲例):
window.com_example_mypackage_MyComponent =
function() {
var connector = this;
// add a method to the connector
this.makeRequest = function(theUrl){
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
connector.returnResponse(xmlHttp.responseText);
}
};
xmlHttp.open("GET", theUrl, true); // true for asynchronous
xmlHttp.send(null);
}
};
調用服務器端的方法MyComponent.makeRequest("myurl")
將觸發makeRequest
方法在客戶端上。當返回響應時,我們呼叫connector.returnResponse(xmlHttp.responseText)
將其發送回服務器,並由MyComponent
的構造函數中添加的"returnResponse"
函數處理。
我可能很愚蠢,但我喜歡當人們解釋如此詳細=) 謝謝你,感謝你的時間。 –