精华内容
下载资源
问答
  • 如何判断响应类型
    千次阅读
    2020-12-20 23:10:16

    我正在使用spring RestTemplate与xml webservice后端进行通信,如下所示:

    ResponseEntity dto = restTemplate.postForObject(url, postData, MainDTO.class);

    问题:后端可以使用MainDTO响应正常数据,也可以使用ErrorDTO响应失败.但是两者都使用HTTP 200.

    但我不知道之前会有哪些物体回来!无论如何restTemplate要求我之前传递类类型.

    那么,我怎么能将xml解析为普通或错误bean?

    旁注:我对webservice后端没有任何控制权.

    解决方法:

    正如您所想,问题是后端应该使用HTTP错误代码返回错误,这就是它们的用途.

    但正如你所说,你无法控制后端,所以你能做的就是先把它作为一个字符串

    ResponseEntity dto = restTemplate.postForObject(url, postData, String.class);

    然后你可以尝试用Jackson或Gson解析字符串响应作为MainDTO(无论你在项目中有什么,你应该,因为我相信Spring的RestTemplate在内部使用它们)和try / catch如果它失败了,然后你尝试用你的ErrorDto解析它.

    更新

    哦,我刚刚读到它是一个XML服务,而不是JSON,上面的方法仍然有效,但是你可以使用SimpleXML(http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#deserialize),它允许你以“简单”的方式反序列化XML,而不是使用Jackson或Gson.方式,您只需要使用他们的教程和示例中描述的注释来注释您的模型.

    标签:java,spring,spring-rest

    来源: https://codeday.me/bug/20190516/1115910.html

    更多相关内容
  • 本文主要介绍了通过JavaScript,判断客户端类型,实现响应式页面的方法。

    JavaScript 判断客户端类型 实现响应式页面


    在跨平台,各种浏览器,移动设备兼容的时候,经常要根据设备、浏览器做特定调整,所以判断设备和浏览器的工作,我们经常会用到navigator.userAgent.toLowerCase()来进行判断。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
            <script type="text/javascript">
                function browserRedirect() {
                    var sUserAgent = navigator.userAgent.toLowerCase();
                    var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
                    var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
                    var bIsMidp = sUserAgent.match(/midp/i) == "midp";
                    var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
                    var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
                    var bIsAndroid = sUserAgent.match(/android/i) == "android";
                    var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
                    var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
                    if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
                        //跳转移动端页面
                        window.location.href="https://dengxj.blog.csdn.net/";
                    } else {
                        //跳转pc端页面
                        window.location.href="https://dengxj.blog.csdn.net/";
    					//一般放在PC页面前端 因此“跳转pc端页面”代码应当删除,不然就陷入了死循环。
                    }
                }
                browserRedirect(); 
            </script>
        </head>
        <body>
     
        </body>
    </html>
    

    其次就是将代码运用到具体网页中去:

    <!DOCTYPE html>
    <html lang="en" class="no-js">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
        <script type="text/javascript">
            function browserRedirect() {
                var sUserAgent = navigator.userAgent.toLowerCase();
                var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
                var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
                var bIsMidp = sUserAgent.match(/midp/i) == "midp";
                var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
                var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
                var bIsAndroid = sUserAgent.match(/android/i) == "android";
                var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
                var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
                if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
                    //跳转移动端页面
                    window.location.href="login-phone.html";
                } else {
                    //跳转pc端页面
    
                }
            }
            browserRedirect();
        </script>
    
        <title>login</title>
    </head>
    <body>
    网页内容***网页内容***网页内容***网页内容***网页内容***网页内容***网页内容***网页内容***网页内容***网页内容***
    </body>
    </html>
    
    展开全文
  • 源码就是定时检查某个窗口是否停止响应。,仅仅通过取窗口标题判断是否卡死,是不太现实的,主要用到的是 IsHungAppWindow() 这个api。这个api就一个参数,是窗口的句柄。是属于 User32.dll 这个库的。返回的是布尔...
  • 就是定时检查某个窗口是否停止响应。,仅仅通过取窗口标题判断是否卡死,是不太现实的,主要用到的是 IsHungAppWindow() 这个api 这个api就一个参数,是窗口的句柄。是属于 User32.dll 这个库的。返回的是布尔类型...
  • 1. 重定向的原理 重定向——>...响应头:loaction + status(302) -------进一步请求 重定向:原理:location + 302 package com.github.response; import javax.servlet.ServletException; imp...

    Response

    响应信息
    通过状态码:判断响应是否成功

    Status:

    200 -----成功响应
    500 -----服务器出现了异常(servlet(和业务相关的数据)由 tomcat)
    404 -----请求 url 路径有问题
    302 -----进一步请求

    响应头:
    loaction:一个地址 + 302:重定向
    简写方式:response。sendRedirect (".项目名称/hello.html")

    重定向的特点:

    1. 发送了两次请求(产生两个 request 对象)
    2. request:本身域对象(共享数据)

    重定向 / 请求转发(servletContext对象)跳转页面
    refersh:定时刷新或者经过 n 秒跳转页面
    响应头(已下载方式打开)
    文件下载:使用第三方 jar 包 commons-io

    1. 重定向的原理

    重定向——>过程中。有几个request对象?
    请求转发——>过程中,有几个request对象?
    在这里插入图片描述

    package com.github.urlpattern;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class MappingDemo1 extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("mappingDemo1.doGet()方法调用了...");
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    }
    
    

    在这里插入图片描述

    package com.github.urlpattern;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class MappingDemo2 extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("mappingDemo2.doGet()方法调用了...");
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
    }
    
    

    在这里插入图片描述

    响应头:loaction + status(302) -------进一步请求
    重定向:原理:location + 302

    adv.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>广告页面</title>
    </head>
    <body>
    广告页面<br>
    <a href="/RequestDemo5">跳转到资源地址</a>
    </body>
    </html>
    
    package com.github.response;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * 请求重定向
     * location请求头+302状态码
     */
    public class ResponseDemo1 extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 重定向的原理:
            // 设置状态302
            // 1.
    //        response.setStatus(302); // 进一步请求服务器
    //        // 设置location响应头
    //        response.setHeader("location","/adv.html");
    
            // 2.
            // 简便的方法
            response.sendRedirect("/adv.html");
    
            // 3.
            // 地址栏不会发生变法,服务器行为
            //request.getRequestDispatcher("/adv.html").forward(request,response);
    
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
    }
    
    

    地址栏输入:
    在这里插入图片描述
    回车之后:
    在这里插入图片描述

    2. refersh:响应头 定时刷新,每隔n秒跳转资源

    package com.github.response;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * refersh:响应头  定时刷新,每隔n秒跳转资源
     */
    public class ResponseDemo2 extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html;charset=utf-8");
    
            // 1.
            // 设置响应头:每经过多少秒实现页面刷新
            //response.setHeader("refersh","2");
    
            // 2.
            response.getWriter().write("注册成功!3秒后跳转首页");
            response.setHeader("refresh","3;/adv.html");
    
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
    }
    
    

    在这里插入图片描述
    3秒之后刷新页面,重定向到一个新的页面:adv.html:
    在这里插入图片描述

    3. content-type:响应头:设置当前响应的类型:html/xml/图片资源

    package com.github.response;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * content-type:响应头:设置当前响应的类型:html/xml/图片资源
     */
    public class ResponseDemo3 extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 设置编码格式
            //response.setHeader("content-type","text/html;charset=utf-8");
            // 简写方式
            //response.setContentType("text/html;charset=utf-8");
    
            // 当前向浏览器输出的格式支持html格式
            //response.setContentType("text/html,charset=utf-8");
            //response.getWriter().write("<html><body>this is a html页面...</body></html>");
    
            // 当作自定义标签进行输出
            response.setContentType("text/xml");
            response.getWriter().write("<html><body>this is a xml...</body></html>");
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
    }
    
    

    在这里插入图片描述

    4. Content-Disposition: attachment; filename=aaa.zip ---- 以下载方式打开资源

    package com.github.response;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    
    /**
     * Content-Disposition: attachment; filename=aaa.zip
     * ---- 以下载方式打开资源
     */
    public class ResponseDemo4 extends HttpServlet {
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 1.
            // 下载文件
            // 创建一个字节输入流对象
    //        InputStream in = new FileInputStream("C:\\Users\\28187\\Pictures\\Saved Pictures\\壁纸\\574.jpg");
    //        // 获取一个字节输出流对象
    //        OutputStream out = response.getOutputStream();
    //        // 边读边写
    //        byte[] buff = new byte[1024];
    //        int len = 0;
    //        while ((len=in.read(buff)) != -1) {
    //            out.write(buff,0,len);
    //        }
    //        // 释放资源
    //        in.close();
    //        out.close();
    
            // 2.
            // 创建File对象
            File file = new File("C:\\Users\\28187\\Pictures\\Saved Pictures\\壁纸\\574.jpg");
    
            // Content-Disposition:响应头
            response.setHeader("Content-Disposition","attachment;filename="+file.getName());
            // 下载文件
            // 创建一个字节输入流对象
            InputStream in = new FileInputStream("C:\\Users\\28187\\Pictures\\Saved Pictures\\壁纸\\574.jpg");
            // 获取一个字节输出流对象
            OutputStream out = response.getOutputStream();
            // 边读边写
            byte[] buff = new byte[1024];
            int len = 0;
            while ((len=in.read(buff)) != -1) {
                out.write(buff,0,len);
            }
            // 释放资源
            in.close();
            out.close();
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    }
    
    

    直接开始下载内容:
    在这里插入图片描述

    展开全文
  • 1、 响应式布局如何实现 2、三种方式实现一个 div 水平和垂直方向的居中 3、 数据类型判断 4、 rem 布局原理 5、 Arguments 6、 原型和原型链
  • Jmeter断言如何判断json数组长度大小 一、实现获取返回值中json数组的长度,采用JsonPathExtrator插件来实现 首先去下载 一个插件:JsonPathExtrator,下载地址 下载后放在jmeter目录下的lib/ext目录下,然后重启...

    Jmeter断言如何判断json数组长度大小


    Jmeter断言如何判断返回数组长度

    、实现获取返回值中json数组的长度,采用JsonPathExtrator插件来实现

    首先去下载 一个插件:JsonPathExtrator,下载地址
    下载后放在jmeter目录下的lib/ext目录下,然后重启jmeter,在options(选项)多了一个菜单plugins manager(下图)
    在这里插入图片描述

    切换到avaliable plugins,搜索YAML plugins,勾选下方出现的JSON/YAML plugins,然后点击右下角apply changes and restart jmeter,等下载好后会自动重启(见下图)
    在这里插入图片描述

    右键请求——后置处理器——选择JSON/YAML Path Extractor(见下图)
    在这里插入图片描述

    Destination Variable Name:变量命名(会放到jmeter全局变量vars中,后续随时可取出来用)
    JSONPath Ecpression:json表达式,值 . r e s u l t . r e c o r d s . l e n g t h ( ) , 此 处 .result.records.length(),此处 .result.records.length()$为整个返回值json体
    Default Value:当json返回体中未取到值时取默认值
    (见下图)
    在这里插入图片描述

    二、实现对全局变量中的长度做数据大小对比

    jmeter全部断言类型,没有可判断大小的,都是包含,等于等比较类型,唯一一个size assertion是对byte做大小判断,不满足我需要的。于是还是得采用代码来,新建一个BeanShell断言(见下图)
    在这里插入图片描述

    因为从全局变量中取出来的值是string类型,需要先转一下int。此处我需要校验长度大于0,即保证返回的json数组至少有1条以上为正常(见下图)
    在这里插入图片描述
    代码如下:

    Integer recordsLength = Integer.parseInt(vars.get("recordsLength"));
    if(recordsLength>0){
        log.info("返回数量超过1条,通过!");
    }else{
        Failure = true;
        log.info("不通过,无返回数据,请检查............!");
    }
    

    可查看jmeter运行日志(见下图)
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • js判断变量类型的五种方法

    万次阅读 2018-06-19 15:54:17
    常用的变量类型有11种:Number,String,Boolean,Object,Array,Json,Function,undefined,Null,Date,RegExp,Error1、使用typeof能判断出四种,分别是number,string,boolean,object,剩余的均被检测为object2、使用...
  • 请求头 报文头包含若干个属性 格式为“属性名:属性值”, ... Accept-Encoding: 浏览器发给服务器,声明浏览器支持的编码类型,gzip, deflate Accept-Language: 客户端接受的语言格式,比如 zh-CN Connection:.
  • C语言程序题判断输入的字符类型

    千次阅读 2021-05-18 12:45:43
    话题:C语言程序题判断输入的字符类型问题详情:==z) printf("该字符是小写字母"); elseif(ch=A&&回答:#include #include voidmain() { printf("请数输入一个字符:"); charch=getchar(); if(ch='a'&&...
  • 前言:相信小伙伴们做接口测试都会遇到一种特别类型的接口——导出文件接口,一般这种接口响应信息都会乱码,那么怎么处理呢? 1、这种接口实际返回的是excel文档,直接去查看响应信息看是否出现乱码问题。 2、导出...
  • 首先在程序中引入Requests模块import requests一、获取不同类型响应内容在发送请求后,服务器会返回一个响应内容,而且requests通常会自动解码响应内容1.文本响应内容获取文本类型响应内容r = requests.get('...
  • 有业务需要,我们需要动态确定接口返回的数据类型。如果json 、text、xml 等… 如果是固定类型可以采用 @RequestMapping 注解中的 produces 来实现 那如果需要不确定类型,那么就不添加这个属性。controller 的...
  • 公司突然添加了后端响应规范,禁止值为null,所有需要统一赋默认值。像下图这种就需要根据不同类型来返回不同默认值。 首先创建一个Modifier public class MyBeanSerializerModifier extends ...
  • php微信接口响应类库

    2022-04-30 11:34:09
    微信接口响应类,判断响应类型,并返回相应的响应内容,事件,需要加载外部配置数据
  • HttpClient获取响应内容类型Content-Type

    千次阅读 2017-07-12 20:36:06
    请求后进行响应的网页内容都有类型,也就是Content-Type 我们可以通过HttpClient接口来获取 例子: package com.gcx.demo.HelloWorld2; import org.apache.http.HttpEntity; import org.apache....
  • 源码: import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.URL;...import java.net.URLConnection;...import java.util.Ar
  • flask获取参数类型和请求响应

    千次阅读 2018-05-15 19:53:39
    flask重要的两种请求: ...(1)GET请求的的参数类型: str(默认) int float path uuid # 没规定,默认(str) @blue.route('/hello/&lt;name&gt;/') def hello_mian(name): return 'hello %s' % (na...
  • php微信接口响应类.zip

    2019-07-11 09:58:45
    微信接口响应类,判断响应类型,并返回相应的响应内容,事件,需要加载外部配置数据
  • iOS之深入解析事件传递的响应

    万次阅读 2021-08-30 20:44:37
    一、UIResponder App 使用响应者对象接收和处理事件,只有继承 UIResponder 的类,才能处理事件。 UIApplication、UIView、...当 App 接收到一个事件时,UIKit 自动引导事件到最合适的响应者对象,也叫做第一响应
  • 应急响应实施方案

    千次阅读 2021-10-24 21:08:49
    应急响应实施方案 文章目录应急响应实施方案1 准备阶段(Preparation)1.1.1 负责人准备内容1.1.2 技术人员准备内容1.1.3 场人员准备内容2. 检测阶段(Examination) 1 准备阶段(Preparation) 目标:在事件真正...
  • SpringBoot 文件上传 通过Content-Type和文件头判断文件类型 一、关于MIME MIME的全称是Multipurpose Internet Mail Extensions,即多用途互联网邮件扩展,尽管读起来有些拗口,但大多数人可能都知道, 这是HTTP协议...
  • Vue3.x(浅响应式,响应式数据变为只读,响应式对象转为普通对象,自定义ref函数,provide 与 inject,响应式数据的判断,Composition API 的优势)
  • 文章目录一、挖矿木马简介1、挖矿流程2、挖矿木马的传播方式二、常见的挖矿木马三、挖矿木马应急响应方法3.1、隔离被感染的服务器/主机3.2、确认挖矿进程3.3、系统排查3.3.1、判断挖矿木马挖矿时间3.3.2、了解网络...
  • 响应式开发与移动端与PC端分别开发的区别:响应式开发只编写一套界面,通过检测视口分辨率,针对不同客户端在客户端做代码处理,来展现不同的布局和内容。移动端与PC端分别开发,通过检测视口分辨率,来判断当前...
  • 在开发中,经常会有一个自定义输出数据格式的场景,此时如果用到 ResponseBodyAdvice 做全局的数据格式控制,在响应纯字符串数据时可能会遇到某些奇怪的问题,本文描述了两个和 String 相关的问题的解决方案,内容...
  • Windows应急响应

    万次阅读 2022-01-28 12:12:42
    临近冬奥、残奥,发一篇Windows的应急响应,希望对大家有所帮助,下一篇会发Linux的应急响应
  • 【SpringBoot 2】(八)数据响应 页面响应

    千次阅读 多人点赞 2022-03-05 18:20:39
    参考尚硅谷雷神的SpringBoot 2总结的SpringBoot数据响应和页面响应相关知识

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 402,243
精华内容 160,897
关键字:

如何判断响应类型