Java HttpRequest JSON & Response Handling

后端 未结 1 1586
暗喜
暗喜 2020-12-25 14:31

I have looked at several other questions, but I still don\'t fully understand this. I want to POST a JSON string to a remote address and then retrieve the values from the JS

相关标签:
1条回答
  • 2020-12-25 15:09

    The simplest way is using libraries like google-http-java-client but if you want parse the JSON response by yourself you can do that in a multiple ways, you can use org.json, json-simple, Gson, minimal-json, jackson-mapper-asl (from 1.x)... etc

    A set of simple examples:

    Using 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;
            }
        }
    }
    

    Using 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;
        }
    }
    

    etc...

    0 讨论(0)
提交回复
热议问题