Java HttpRequest JSON和响应处理

我看了其他几个问题,但我仍然不完全理解。我想将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起)…等等

一组简单的例子:

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;

}

}

}

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;

}

}

等等…

以上是 Java HttpRequest JSON和响应处理 的全部内容, 来源链接: utcz.com/qa/429507.html

回到顶部