在浏览器中命中URI myresourceUrl会在浏览器中显示json内容。
要求: 需要使用httpbuilder-ng的get方法来调用URI的GET,响应的内容应为json。
此json文件将是另一个任务的输入所必需的。 如何实现这一目标。我们是否需要任何解析器才能使用http-builder-ng将返回的响应作为json获得。
预期的响应格式: {“ name”:“ Abc”,“ info”:{“ age”:45,“ height”:“ 5.5”}}
df = df.loc[df['Quantity'].between(df['Min Q'], df['Max Q']), ['Combined','Quantity','Range']]
print (df)
Combined Quantity Range
0 A 0 0 - 49
5 A 60 50 - 99
9 A 75 50 - 99
14 A 149 100 - 149
25 B 250 0 - 299
30 B 300 300 - 399
36 C 40 5 - 60
39 C 45 5 - 60
43 C 75 50 - 100
46 C 80 50 - 100
实际格式,我们得到: {name:Abc,info:{age:45,height:5.5}}
如何以预期的响应格式获取上述指示的响应。
答案 0 :(得分:0)
首先,确认您的http请求确实返回了JSON响应。如果是这样,您可以使用gson库。试试
import com.google.code.gson;
String response = gson.toJSON(http.get(LazyMap.class, cfg -> {
cfg.getRequest().getUri().setPath(myPath);
}));
答案 1 :(得分:0)
默认情况下,将解析内容类型“ application / json”,而不是作为字符串返回。您需要为内容类型定义一个自定义解析器。我整理了一个使用假服务器的示例,该服务器返回“ application / json”内容,然后显示如何在HttpBuilder-NG中将其作为字符串返回:
import com.stehno.ersatz.ErsatzServer;
import groovyx.net.http.HttpBuilder;
import static com.stehno.ersatz.ContentType.APPLICATION_JSON;
import static groovyx.net.http.NativeHandlers.Parsers.textToString;
public class Runner {
public static void main(final String[] args) {
final ErsatzServer server = new ErsatzServer();
server.expectations(expects -> {
expects.get("/something").responder(response -> {
response.body("{\"name\":\"Abc\",\"info\":{\"age\":45,\"height\":\"5.5\"}}", APPLICATION_JSON);
});
});
final String response = HttpBuilder.configure(cfg -> {
cfg.getRequest().setUri(server.getHttpUrl());
cfg.getResponse().parser("application/json", (chainedHttpConfig, fromServer) -> textToString(chainedHttpConfig, fromServer));
}).get(String.class, cfg -> {
cfg.getRequest().getUri().setPath("/something");
});
System.out.println(response);
System.exit(0);
}
}
请注意进行解析的cfg.getResponse().parser("application/json", (chainedHttpConfig, fromServer) -> textToString(chainedHttpConfig, fromServer));
行(覆盖默认行为)-另请参见导入import static groovyx.net.http.NativeHandlers.Parsers.textToString;
。