精华内容
下载资源
问答
  • java 通过发送json,post请求,返回json数据的方法 java 通过发送json,post请求,返回json数据的方法
  • 就是在接收post请求的时候获取不到请求数据,自己用ajax写的时候没有问题   这个是报文内容 {"type":"WNING_INFO","code":"WYC","downtime":"2017-01-...

    昨天遇到一个问题

     

    就是在接收post请求的时候获取不到请求数据,自己用ajax写的时候没有问题

     

    这个是报文内容

    {"type":"WNING_INFO","code":"WYC","downtime":"2017-01-0101:00:00","busicode":"2017021212123456","data":{"equipment_id":"1","equipment_name":"1号度计","equipment_type":"","type":"SECOND","status":"异常","warn_infor":"设障断电","location_code":"01010101","company_id":"101","company_name":"","item_code":"000001","item_name":"大米","car_no":""}}

    这段报文用ajax就可发送过去

    data中就是这段数据


     

    可能因为是在后台发起的post的请求所以可能跟浏览器端的请求有所区别,但我到现在也没有找到区别在哪

    这段代码就是发送post请求的方法

     public static String sendPost(String url, String param) {
            PrintWriter out = null;
            BufferedReader in = null;
            String result = "";
            try {
                URL realUrl = new URL(url);
                // 打开和URL之间的连接
                URLConnection conn = realUrl.openConnection();
                // 设置通用的请求属性
                conn.setRequestProperty("Content-Type","application/json");
                conn.setRequestProperty("charset", "utf-8");
        
                // 发送POST请求必须设置如下两行
                conn.setDoOutput(true);
                conn.setDoInput(true);
                // 获取URLConnection对象对应的输出流
                out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(),"utf-8"));
    
                // 发送请求参数
                out.print(param);
                // flush输出流的缓冲
                out.flush();
                // 定义BufferedReader输入流来读取URL的响应
                in = new BufferedReader(
                        new InputStreamReader(conn.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
                System.out.println(line);
            } catch (Exception e) {
                System.out.println("发送 POST 请求出现异常!"+e);
                e.printStackTrace();
            }
            //使用finally块来关闭输出流、输入流
            finally{
                try{
                    if(out!=null){
                        out.close();
                    }
                    if(in!=null){
                        in.close();
                    }
                }
                catch(IOException ex){
                    ex.printStackTrace();
                }
            }
            return result;
        }

     

    所以就先贴出来我解决这个问题的方式

    因为数据归根到底还是以数据流的方式发送过来的,所以就用流的方式来处理数据

     

    这段代码就是获取HttpServletRequest中的请求数据,并解析

    BufferedReader reader = null;
            StringBuilder sb = new StringBuilder();
            try{
                reader = new BufferedReader(new InputStreamReader(request.getInputStream(), "utf-8"));
                String line = null;
                while ((line = reader.readLine()) != null){
                    sb.append(line);
                }
            } catch (IOException e){
                e.printStackTrace();
            } finally {
                try{
                    if (null != reader){ reader.close();
                    }
                } catch (IOException e){
                    e.printStackTrace();
                }
            }
            System.out.println("json;"+sb.toString());

    最后得到的就是一个json字符串

     

    得到这个json以后直接用Gson解析就行。

    希望能帮助到碰见这个问题的人,同样也希望有人能给我解释一下出现这个问题的具体原因,谢谢

     

     

     

    展开全文
  • 1.请求参数为json格式 1.pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:...

    1.请求参数为json格式

    1.pom.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>tcl.java</groupId>
        <artifactId>test</artifactId>
        <version>1.0-SNAPSHOT</version>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <mainClass>hello.helloword</mainClass>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
        <dependencies>
    
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.5</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.51</version>
            </dependency>
        </dependencies>
    
    </project>
    

    2.代码

    package hello;
    
    import com.alibaba.fastjson.JSONObject;
    import org.apache.http.HttpEntity;
    import org.apache.http.ParseException;
    import org.apache.http.client.methods.CloseableHttpResponse;
    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.HttpClients;
    import org.apache.http.message.BasicHeader;
    import org.apache.http.protocol.HTTP;
    import org.apache.http.util.EntityUtils;
    
    
    import java.io.IOException;
    import java.util.HashMap;
    
    public class JsonPost {
        /**
         * 发送post请求
         * @param url  路径
         * @param jsonObject  参数(json类型)
         * @param encoding 编码格式
         * @return
         * @throws ParseException
         * @throws IOException
         */
        public static String send(String url, JSONObject jsonObject, String encoding) throws ParseException, IOException {
            String body = "";
    
            //创建httpclient对象
            CloseableHttpClient client = HttpClients.createDefault();
            //创建post方式请求对象
            HttpPost httpPost = new HttpPost(url);
    
            //装填参数
            StringEntity s = new StringEntity(jsonObject.toString(), "utf-8");
            s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
                    "application/json"));
            //设置参数到请求对象中
            httpPost.setEntity(s);
    //        System.out.println("请求地址:"+url);
    //        System.out.println("请求参数:"+nvps.toString());
    
            //设置header信息
            //指定报文头【Content-type】、【User-Agent】
    //        httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");
            httpPost.setHeader("Content-type", "application/json");
            httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
    
            //执行请求操作,并拿到结果(同步阻塞)
            CloseableHttpResponse response = client.execute(httpPost);
            //获取结果实体
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                //按指定编码转换结果实体为String类型
                body = EntityUtils.toString(entity, encoding);
            }
            EntityUtils.consume(entity);
            //释放链接
            response.close();
            return body;
        }
    
        public static void main(String[] args) throws IOException {
    //        将post请求参数写到map中(map中可以存map)
            HashMap<String, String> params = new HashMap<>();
            params.put("date", "20200630");
            params.put("typeId", "dsafa");
            HashMap<String, Object> map = new HashMap<>();
            map.put("key", "42423=q8");
            map.put("id", "42342352");
            map.put("pageNum", "0");
            map.put("pageSize", "1000");
            map.put("params", params);
    //        将map转为json对象
            JSONObject json = new JSONObject(map);
            String  url = "http://dc-o.web.leiniao.com/operation/open/request";
            System.out.println(send(url, json, "UTF-8"));
        }
    }
    
    

    2.请求参数为form-data格式

    1.pom.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>tcl.java</groupId>
        <artifactId>test</artifactId>
        <version>1.0-SNAPSHOT</version>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <mainClass>hello.helloword</mainClass>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
        <dependencies>
    
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.5</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.51</version>
            </dependency>
        </dependencies>
    
    </project>
    

    2.代码

    package hello;
    
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Map;
    
    public class FormatPost {
        /**
         * 使用POST格式发送form-data格式参数,并获取响应字符串
         * @param path
         * @param params
         * @return
         */
        public static String sendSmsFormByPost(String path, Map<String ,Object> params){
            URL u = null;
            HttpURLConnection con = null;
            // 构建请求参数
            StringBuffer sb = new StringBuffer();
            if (params != null) {
                for (Map.Entry<String, Object> e : params.entrySet()) {
                    sb.append(e.getKey());
                    sb.append("=");
                    sb.append(e.getValue());
                    sb.append("&");
                }
                //去掉最后一个&
                sb.substring(0, sb.length() - 1);
            }
            // 尝试发送请求
            try {
                u = new URL(path);
                con = (HttpURLConnection) u.openConnection();
                 POST 只能为大写,严格限制,post会不识别
                con.setRequestMethod("POST");
                con.setDoOutput(true);
                con.setDoInput(true);
                con.setUseCaches(false);
                con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream(), "UTF-8");
                osw.write(sb.toString());
                osw.flush();
                osw.close();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (con != null) {
                    con.disconnect();
                }
            }
    
            // 读取返回内容
            StringBuffer buffer = new StringBuffer();
            try {
                //一定要有返回值,否则无法把请求发送给server端。
                BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
                String temp;
                while ((temp = br.readLine()) != null) {
                    buffer.append(temp);
                    buffer.append("\n");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return buffer.toString();
        }
    
    
            public static void main(String[] args) throws IOException {
    //        将post请求参数写到map中
                HashMap<String, Object> map = new HashMap<>();
                map.put("key", "rwrwffcs");
                map.put("id", "424252");
                map.put("pageNum", "0");
                map.put("pageSize", "1000");
                map.put("params", "aaa");
                String  url = "http://dc-o.web.leiniao.com/operation/open/request";
                System.out.println(sendSmsFormByPost(url, map));
            
        }
        
        
    }
    
    
    展开全文
  • /** * 发送post请求 * @param url 路径 * @param jsonObject 参数(json类型) * @param encoding 编码格式 * @return * @throws ParseException * @throws IOException */ public s...
    /**
         * 发送post请求
         * @param url  路径
         * @param jsonObject  参数(json类型)
         * @param encoding 编码格式
         * @return
         * @throws ParseException
         * @throws IOException
         */
        public static String send(String url, JSONObject jsonObject,String encoding) throws ParseException, IOException{
            String body = "";
    
            //创建httpclient对象
            CloseableHttpClient client = HttpClients.createDefault();
            //创建post方式请求对象
            HttpPost httpPost = new HttpPost(url);
    
            //装填参数
            StringEntity s = new StringEntity(jsonObject.toString(), "utf-8");
            s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
                    "application/json"));
            //设置参数到请求对象中
            httpPost.setEntity(s);
            System.out.println("请求地址:"+url);
    //        System.out.println("请求参数:"+nvps.toString());
    
            //设置header信息
            //指定报文头【Content-type】、【User-Agent】
    //        httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");
            httpPost.setHeader("Content-type", "application/json");
            httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
    
            //执行请求操作,并拿到结果(同步阻塞)
            CloseableHttpResponse response = client.execute(httpPost);
            //获取结果实体
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                //按指定编码转换结果实体为String类型
                body = EntityUtils.toString(entity, encoding);
            }
            EntityUtils.consume(entity);
            //释放链接
            response.close();
            return body;
        }

     

    原文链接:https://blog.csdn.net/daichangxia/article/details/72853267

    展开全文
  • Java获取post请求json数据

    万次阅读 2017-03-01 17:47:46
    java接收http请求body中的json数据 发表于 2015-12-26  | 分类于 java  | 暂无评论 一般情况下,web应用中,浏览器发送http请求,传参数的时候都是作为param传递的,java服务端通过request....

    java接收http请求body中的json数据

    一般情况下,web应用中,浏览器发送http请求,传参数的时候都是作为param传递的,java服务端通过request.getParameter(name)可以获取参数内容;

    但是会有一些场景,把参数放在了http的payload中(contentType:”application/json”),这时,使用getParameter就获取不到了, 比如下面这张图,参数是json字符串,放在了payload中
    http payload

    实际上,payload,就是http的body,通过读取body,就获取到了

    1. 原生servlet获取

    http body通过读取input流可以得到

          
    1
    2
    3
    4
    5
    6
    7
    8
          
    br = new BufferedReader( new InputStreamReader((ServletInputStream) request.getInputStream(), "utf-8"));
    StringBuffer sb = new StringBuffer( "");
    String temp;
    while ((temp = br.readLine()) != null) {
    sb.append(temp);
    }
    br.close();
    params = sb.toString();

    如果传递的是json,得到字符串之后,再反序列化成json对象就可以了

    2. springmvc获取

    SpringMVC中有一个@RequestBody注解,就是用来将请求body中的json转换为java对象的,不仅转换普通的java bean,也可以是List,很方便

          
    1
    2
    3
    4
    5
    6
          
    @RequestMapping(value = "/query", method = RequestMethod.POST)
    public ModelAndView queryList(@ModelAttribute("ReportBo") ReportBo query,
    @RequestBody ReportBo query1,
    HttpServletRequest request) {
    }

    0
    展开全文
  • /** * 发送post请求 * @param url 路径 * @param jsonObject 参数(json类型) * @param encoding 编码格式 * @return * @throws ParseException * @throws IOException */ ...
  • 1、直接使用request....2、通过请求体的IO流获取参数(这种方式只能用于POST,因为GET方式没有请求体);String s ="";InputStream in = null;BufferedInputStream bin = null;try{in = request.getInputStream...
  • Java获取post请求json格式参数(raw)

    千次阅读 2020-07-29 17:06:26
    //this.getRequest()此处需要先获取HttpServletRequest对象拿到输入流 BufferedReader br = new BufferedReader(new InputStreamReader(this.getRequest().getInputStream(), "UTF-8")); String line = null;...
  • 接收字符 两种格式 get, post需要设置发送参数 public static void interfaceUtil(String path,String data) { try { URL url = new URL(path); //打开和url之间的连接 HttpURLConnection con...
  • 这几天做一个通知接口,其他服务器会向我的服务器发送通知,是Post方式,是json字符 找了好多方法都不行,功夫不负有心人,终于找到合适的方法: 代码如下: 使用的是request的输入流来写的,记得要写utf-8...
  • 一、java后台post请求发送json参数 GET请求向服务器发送的数据,都放在url中,这样在发送请求时不用向请求正文中写入数据。而POST请求在发送时,必须先将发送的数据,写入到请求正文中。 package dw.health; import...
  • 最近做的一个小项目中,前端ajax调用后台API,post请求传递用json封装好的数据对象、数据对象数组,发现springMVC的@RequestBody注解可以解决这个问题,代码如下:前端: pageEncoding="utf-8"%&gt; ...
  • 前端提交POST /api/test HTTP/1.1Host: 192.168.135.69:81Connection: keep-aliveContent-Length: 18Origin: http://192.168.135.69:81User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) Apple...
  • package zjhj.... import android.content.Context; import android.os.Handler; import android.os.Message;...import android.util.Log;...import java.io.BufferedReader;...import java.io.IOExce...
  • Javapost请求发送文件或json数据

    千次阅读 2019-05-17 21:50:11
    分别给出了post发送文件和json数据的函数,其中使用到了Jackson库来转化Json数据,使用log4j2来打印日记,可自行剔除。 public class HttpUtils { static private ObjectMapper objectMapper=new ObjectMapper(); ...
  • Java Post 数据请求接收

    千次阅读 2021-02-26 09:58:01
    这两天在做http服务端请求操作,客户端post数据到服务端后,服务端通过request.getParameter()进行请求,无法读取到数据,搜索了一下发现是因为设置为text/plain模式才导致读取不到数据urlConn.setRequestProperty(...
  • java模拟post请求发送json数据

    千次阅读 2019-04-22 17:32:00
    import com.alibaba.fastjson.JSONObject; import org.apache.http.client.methods.CloseableHttpResponse... import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; im...
  • java,SpringMVC,jfinal,接口
  • Servlet接收post请求json数据

    千次阅读 2018-12-24 17:56:11
    Servlet接收post请求json数据  InputStreamReader insr = new InputStreamReader(request.getInputStream(),"utf-8");  String result = "";  int respInt = insr.read();  while...
  • 1.post请求方式一,指定contentType contentType为application/json时,data的类型要转换成json字符的形式 $.ajax({ type : "POST", url : "/mailbox/sendMail/resend", dataType : "json", data : JSON....
  • spring接收json字符的两种方式

    千次阅读 2021-02-12 23:18:32
    一、前言前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到。自己测试接口时使用postman的form-data传参(相当于前端的form表单提交)是没问题的。后...
  • 一般情况下,web应用中,浏览器发送http请求,传参数的时候都是作为param传递的,java服务端通过request.getParameter(name)可以获取参数内容;但是会有一些场景,把参数放在了http的payload中(contentType:”...
  • public String toJson() {JSONObject filter = new JSONObject();try {filter.put("gender", gender.getCode());filter.put("feature_id", productCategory);} catch (JSONException e) {e.printStackTrace();}JSONO...
  • java发送post请求json数组形式

    千次阅读 2018-06-18 11:02:30
    // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestProperty("token", token);//设置请求头所需token验证 conn.setRequestProperty("Content-Type",...
  • java web 在过滤器中解析post json参数
  • Java解析post请求复杂嵌套json数据

    千次阅读 2018-11-15 21:44:12
    请求数据: ps:一个对象包含一个对象; 方式一:使用map 代码段: @RestController @RequestMapping("test") public class testDemo { @PostMapping("demo") public void test(@RequestBody Map<String...
  • 主要介绍了详解使用@RequestBody取POST方式的json字符,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • java接收http请求body中的json数据

    万次阅读 2017-05-12 01:25:18
    java接收http请求body中的json数据 发表于 2015-12-26  | 分类于 java  | 一般情况下,web应用中,浏览器发送http请求,传参数的时候都是作为param传递的,java服务端通过request.getParameter(name)可以...
  • java-HttpURLConnection 发送POST请求 传递参数或JSON数据 需求 三方接口 restful请求 POST方式 参数JSON 接收数据JSON HttpURLConnection发送POST请求 public class RestUtil { public String postMethod(String...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,350
精华内容 19,740
关键字:

java接收post请求json串

java 订阅