我看了其他几个问题,但我仍然不完全理解。我想将JSON字符串发布到远程地址,然后从JSON响应中检索值。我正在使用Java的Apache库。
public HttpResponse http(String url, String body) throws IOException {
try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
HttpPost request = new HttpPost(url);
StringEntity params = new StringEntity(body);
request.addHeader("content-type", "application/json");
request.setEntity(params);
//httpClient.execute(request);
HttpResponse result = httpClient.execute(request);
} catch (IOException ex) {
}
return null;
}
作为主体,我将通过以下示例():
{"example":1,"fr":"lol"}
我也完全不知道如何从响应中检索JSON值。
最简单的方法是使用类似google-http-java-client之类的库,但是如果您想自己解析JSON响应,则可以通过多种方式进行,您可以使用org.json,json-
simple
,Gson,minimal-
json
,jackson-mapper-
asl
(从1.x起)…等等
一组简单的例子:
使用Gson:
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
public class Gson {
public static void main(String[] args) {
}
public HttpResponse http(String url, String body) {
try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
HttpPost request = new HttpPost(url);
StringEntity params = new StringEntity(body);
request.addHeader("content-type", "application/json");
request.setEntity(params);
HttpResponse result = httpClient.execute(request);
String json = EntityUtils.toString(result.getEntity(), "UTF-8");
com.google.gson.Gson gson = new com.google.gson.Gson();
Response respuesta = gson.fromJson(json, Response.class);
System.out.println(respuesta.getExample());
System.out.println(respuesta.getFr());
} catch (IOException ex) {
}
return null;
}
public class Response{
private String example;
private String fr;
public String getExample() {
return example;
}
public void setExample(String example) {
this.example = example;
}
public String getFr() {
return fr;
}
public void setFr(String fr) {
this.fr = fr;
}
}
}
使用json-simple:
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class JsonSimple {
public static void main(String[] args) {
}
public HttpResponse http(String url, String body) {
try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
HttpPost request = new HttpPost(url);
StringEntity params = new StringEntity(body);
request.addHeader("content-type", "application/json");
request.setEntity(params);
HttpResponse result = httpClient.execute(request);
String json = EntityUtils.toString(result.getEntity(), "UTF-8");
try {
JSONParser parser = new JSONParser();
Object resultObject = parser.parse(json);
if (resultObject instanceof JSONArray) {
JSONArray array=(JSONArray)resultObject;
for (Object object : array) {
JSONObject obj =(JSONObject)object;
System.out.println(obj.get("example"));
System.out.println(obj.get("fr"));
}
}else if (resultObject instanceof JSONObject) {
JSONObject obj =(JSONObject)resultObject;
System.out.println(obj.get("example"));
System.out.println(obj.get("fr"));
}
} catch (Exception e) {
// TODO: handle exception
}
} catch (IOException ex) {
}
return null;
}
}
等等…
问题内容: 我有一个页面作为HtmlUnit中的UnexpectedPage返回,响应为JSON。我可以使用HTMLUnit进行解析还是需要一个额外的库? 问题答案: HtmlUnit不支持它。它最多可以执行JS函数。您需要事先检查返回的响应是否匹配,然后使用合适的工具进行解析。Google Gson 在此方面很有用。 如果JSON结构是事先已知的,则您甚至可以使用Gson将其转换为完全有价值的J
我知道类似的帖子,我也检查过,但没有一个能帮到我。 我想POST到一个需要三个参数和一个基本身份验证的API(管理示例任务)。在postman中它可以工作。我提供的正文如下: 并设置基本身份验证(使用用户名和密码)。API发送如下响应: 如果我向api发送POST,一切都很好,但现在我想在java中实现它。如果我尝试发送一个POST: HttpClientErrorException: 400错误
问题内容: 我在弄清楚如何从jQuery $ .post()请求中正确读取JSON响应时遇到了麻烦。 在下面的jQuery代码中,我根据对应的“ color_entry_id”(用作键)从DOM中的元素填充字符串的关联数组: 然后,我发出POST请求,发送“ image_links”数组: 另外,如上所示,我尝试遍历响应数组并输出要成为字符串的每个项目,但是我只得到“ [object Object
我正在使用Retrofit和Gson从REST服务获取数据。它运行完美,但仅当API不返回错误时。通常,API返回对象列表(作为json),但当发生错误时,API返回单个错误对象。我正在尝试获取
我一直试图向facebook发送HTTP POST请求,但没有成功。我从服务器收到以下响应: HTTP/1.1 400不良请求内容-类型:text/html;charset=utf-8日期:2016年12月10日星期六21:28:17 GMT连接:关闭内容-长度:2959 Facebook |错误 抱歉,出了点问题,我们正在修理,会尽快修好的 我的密码 我做错了什么?
在浏览器发送 Ajax 请求之后,下一步骤自然是服务器响应。服务器在接收到请求之后会进行一系列处理步骤,最终返回结果。而与此同时,客户端会在接收到返回的结果之后进行界面的展示或者数据的处理。 本章节主讲 Ajax 收到返回数据后处理服务器响应过程。 前言 本章节将会从两个方面来讲解 Ajax 如何处理服务端响应,它们分别是: 处理的时机 处理的方法 如果你不知道 Ajax 是如何获取服务端响应内容