我需要实现一个调用Web服务并返回响应的函数。
我试过了
public String getFolderJson(String path) {
String result="initial_value";
StringBuilder param = new StringBuilder();
param.append("?sessionId=").append(getSessionId());
param.append("&path=").append(path);
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, "https://localhost/folder" + param);
try {
builder.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(Request request,
Response response) {
result = response.getText();
System.out.println(response.getText());
//I need to return "result"
}
@Override
public void onError(Request request, Throwable exception) {}
});
return result; //the result get returned before the response is recieved.So i am getting the return value "initial_value".
}
catch (RequestException e) {}
return null;
}
在调用 getFolderJson()
Web服务时,将成功调用。但是result
在接收到响应之前返回。因此,我正在获取重调谐器值“
initial_value”。函数
如何从响应中返回值getFolderJson()
?
GWT不支持同步Ajax,因此您必须使用异步模式对应用程序进行编码。
GWT用于执行请求的低级对象是XMLHttpRequest(旧的IE版本除外),并且GWT总是open()
在async设置为true的情况下调用其方法。因此,拥有同步Ajax的唯一方法是维护自己的XMLHttpRequest.java
。但是同步ajax是个坏主意,甚至jQuery也已弃用这种可能性。
因此,gwt中的正常方式应该是方法返回void
,并且在响应可用时传递带有回调的附加参数以执行。
public void getFolderJson(String path, Callback<String, String> callback) {
RequestBuilder builder = new RequestBuilder(...);
try {
builder.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
callback.onSuccess(response.getText());
}
@Override
public void onError(Request request, Throwable exception) {}
callback.onFailure(exception.getMessage());
});
} catch (RequestException e) {
callback.onFailure(exception.getMessage());
}
}
我宁愿为此使用gwtquery Promises
语法,而不是请求构建器之一:
Ajax.get("http://localhost/folder?sessionId=foo&path=bar")
.done(new Function(){
public void f() {
String text = arguments(0);
}
});
我在Spring有Rest控制器。 控制器: 服务: 存储库: 实体: 目前当我在Postman(或浏览器)中使用方法@GetMap在获得JSON对象响应: 作为回应,我需要字符串格式的字段“id”,看起来像: 如何以字符串格式将JSON对象fielt“id”作为ObjectId返回?
我试图发出一个POST(添加)请求,返回添加项的ID。ID是一个18个字符的字符串。只要字符串不超过16个字符,一切都正常。当长度为18个字符时,最后两个字符总是损坏的,因为它们默认为零。 我使用Vuejs作为前端,使用SpringBoot作为后端。我知道javascript在很长一段时间内限制了53位的精度,这就是为什么我使用字符串作为这个ID的类型。如果我试图返回一个18位的数字,而不是一个1
问题内容: 将编码的字符串添加到http共振似乎将某些字符替换为!F(MISSING)。如何预防? 输出: {“ encodedText”:“ M6c8RqL61nMFy%!F(MISSING)hQmciSYrh9ZXgVFVjO”} 码: 问题答案: 您正在使用转义值“ M6c8RqL61nMFy%2FhQmciSYrh9ZXgVFVjO”作为以下行上的格式字符串: Fprintf尝试格式化动词
我使用Guzzle发出一个异步请求,返回JSON。呼叫工作正常,响应正常,但是: 如果我回应- 我需要使用 JSON 来验证来自服务的响应。我该怎么做?我已经浏览了文档,但我显然错过了一些东西。 本质上类似于将json getbody输出分配给$json: 感谢任何帮助问候
我制作了一个返回UserSettings对象数组的服务: 当我在URL http://localhost:8181/settings?ids=123&fields=customdata,user_id上发出GET请求时,我会得到以下信息:
问题内容: 我将Spring MVC用于简单的JSON API,其基础方法如下所示。(我已经有一个直接生成JSON的服务层。) 问题是,在给定的情况下,最简单,最干净的响应HTTP 400错误的方法是什么? 我确实遇到过类似的方法: …但是我不能在这里使用它,因为我的方法的返回类型是String,而不是ResponseEntity。 问题答案: 将返回类型更改为,则可以在下面使用400 并要求正确