在我们的项目中,我们使用JSON在前端和后端之间进行数据传输。基本上,我们通过准备WSRequestHolder来创建请求,就像play doc告诉我们的那样(https://www.playframework.com/documentation/2.3.7/JavaWS)然后发布一个json字符串。然后将WSResponse映射为“asJson”,并作为promise返回。
但与WSResponse不同,JsonNode不包含从后端返回的http状态,Promise也不包含。
我们以后需要在代码中区分不同的状态代码,以便进行正确的响应处理。
到目前为止,我们得到了一个工厂类,它提供了准备好的对象,其中WSRequestHolder包含url、头和内容类型集,用于发布json数据。此外,我们在工厂实施了如下“post”:
/**
* Posts the given json body to the specified url
*
* @param body Body of JSON node to post
* @return Promised response from post call
*/
@Override
public F.Promise<JsonNode> post(JsonNode body) {
try {
return wsRequestHolder.post(body).map(WSResponse::asJson).recover(new F.Function<Throwable, JsonNode>() {
// if null response is returned, recover it and return 'java' null properly
@Override
public JsonNode apply(Throwable throwable) throws Throwable {
return null;
}
});
} catch (RuntimeException e) {
return null;
}
}
在控制器中,返回的promise可以被解包,以JsonNode的形式检索实际的json响应。
F.Promise<JsonNode> jsonPromise = Factory.preparedJson(url).post(someJsonNode);
JsonNode jsonResponse = jsonPromise.get(responseTimeoutInMs);
但是是的——在控制器级别之间的某个地方,我需要检查状态代码。
非常感谢!
你好,蒂姆
您可以检查来自WS响应对象的状态响应,并在promise中与JsonNode一起返回它。这是一个简单的例子:
Promise<Pair<JsonNode,Integer>> jsonPromise = WS.url(url).get().map(
new Function<WSResponse, Pair<JsonNode,Integer>>() {
public Pair<JsonNode,Integer> apply(WSResponse response) {
Integer status=response.getStatus();
JsonNode json = response.asJson();
return new Pair(json,status);
}
}
);
问题内容: 我的手机APP以文本模式完美下载内容。下面是执行此操作的代码。我将其称为Communicator类和exectueHttpGet: 我要讲的是(URL的源代码): 该响应是一个字符串。在服务器上,它作为JSON对象输出(与PHP一起),现在在我的Android PHP中,我想将此字符串转换为JSON。这可能吗? 问题答案: 您收到的是从附加到a 并最终转换为的一系列字符-因此,结果是可
我试图使用庞大的Node.js包将文件从Docx转换为HTML。庞大的自述文件建议使用以下格式转换文件: 在函数中的任何位置放置语句将不允许我使用存储的html,但是我可以将正确的html内容输出到控制台。我需要关于如何返回/使用promise之外的html变量的建议,谢谢。
我正在制作一个函数来返回布尔值,以了解元素是否存在,但我得到 我怎么才能得到唯一的真实或虚假响应,请帮助,我使用了if条件,但它显示了该响应…… 这是我调用的函数
在我看来,有一个与控制器的一个功能链接的输入文件 此函数调用服务中的一个函数,该函数假定将我的xml文件转换为json 在服务函数中,XML文件在文件读取器中读取,然后在文件读取器的onloadend部分转换为XML 如何在onloadend中检索转换后的json结果,以便在Angular控制器中使用它,特别是在promise的情况下?或者我应该使用setTimeout吗?
问题内容: 我创建了一个类,以从PHP文件的JSON编码中检索注释。此类从AsyncTask扩展: 如您所见,我正在尝试在“ doInBackground”过程运行时显示一个ProgressDialog。但是progressDialog构造函数要求一个Context,但我不知道如何提供它。 我从Fragment调用此类,所以无法访问这样的上下文: “主要”活动称为:AndroidViewPager
我试图访问的结果(这里是'机构')的抓取,但继续得到这个: promise{ 它说已解决,但不只是给我我想要的数组。 这是我的密码 以上结果来自console.log(Categories)