前言

有些封装好的API把错误都屏蔽掉,直接返回某一个不明确的具体错误,让人感到困惑。

  1. //code in SDK read-only
  2. public static Data requestHandler(result) throws ApiException{
  3. try{
  4. resultEntity = JSONObject.parseObject(result);
  5. }catch (Exception e){
  6. throw new ApiException(SysEnums.SYS_ERR);
  7. }
  8. if(resultEntity == null || resultEntity .get("data") == null){
  9. throw new ApiException(SysEnums.SYS_ERR);
  10. }
  11. }
  12. public static Data someAPI(methodName,params) ApiException{
  13. return requestHandler(getURLPATH(methodName),params);
  14. }
  15. //Implements
  16. try{
  17. result = someAPI(apiName,params);
  18. }catch(ApiException e){
  19. //You will get no detailed error message but only the error code SysEnums.SYS_ERR
  20. }

闲的没事抓个包看看什么原因

parseObject 如果传递的参数不是JSON字符串,那么很有可能该接口返回了一个XML/HTML

就要看看这个究竟是什么。

好处:
1. 分析是调用方的错误,还是API提供方的错误
2. 错误具体原因如果是API提供方的,可以把返回信息反馈给API提供方,并且放心地进行重试。
3. 错误具体原因如果是API调用方的,可以帮助诊断程序错误。

抓包方法

下载Wireshark并安装

如图1-1所示:

图 1-1 使用过滤器

点击过滤器表达式右侧的 + 然后就可以将过滤器表达式保存下来。
还可以点击左侧 过滤器表达式首选项 可以添加多个过滤器。

例如可以抓目标主机为 blog.csdn.net

  1. http.host contains "blog.csdn.net"

抓到的包如下图1-2所示:

图 1-2 抓包分析

这样选择任意一个HTTP请求,追踪流->HTTP流,然后就可以看该HTTP请求下的每次TCP的请求过程。可以清楚的看到返回的数据,如图1-3所示。


图 1-3 追踪HTTP流

wireshark实用的过滤器表达式

  1. #抓HTTP的请求
  2. tcp.port == 80 || udp.port == 80
  3. #抓某出站请求路径
  4. http.host == "domain.com" and http.request.uri contains "/url/path"
  5. #只抓请求返回
  6. ip.src_host contains "realdomain.com" and http

第一个表达式抓到的HTTP请求非常多,没什么用处
第二个表达式可以抓到本地发送的HTTP请求,并且只关注某个path
第三个表达式可以抓到某API返回的给本机的信息,并且是HTTP层的

注: “realdomain.com”是第二个表达式追踪流查到的目标主机真实的域名

以上。

用Wireshark抓包分析请求的更多相关文章

  1. 用Wireshark抓包分析超过70秒的请求

    超过70秒的请求是通过分析IIS日志发现的: 10.159.63.104是SLB的内网IP. 通过Wireshark抓包分析请求是9:22:21收到的(tcp.stream eq 23080): 09 ...

  2. Wireshark抓包分析/TCP/Http/Https及代理IP的识别

    前言 坦白讲,没想好怎样的开头.辗转三年过去了.一切已经变化了许多,一切似乎从没有改变. 前段时间调研了一次代理相关的知识,简单整理一下分享之.如有错误,欢迎指正. 涉及 Proxy IP应用 原理/ ...

  3. Wireshark抓包分析HTTPS与HTTP报文的差异

    一.什么是HTTPS: HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换 ...

  4. wireshark 抓包分析 TCPIP协议的握手

    wireshark 抓包分析 TCPIP协议的握手 原网址:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html 之前写过一篇 ...

  5. wireshark抓包分析——TCP/IP协议

    本文来自网易云社区 当我们需要跟踪网络有关的信息时,经常会说"抓包".这里抓包究竟是什么?抓到的包又能分析出什么?在本文中以TCP/IP协议为例,简单介绍TCP/IP协议以及如何通 ...

  6. 【计算机网络】wireshark抓包分析1

    学习计算机网络很久了,但总是局限于书本知识,感觉get不到重点.经师兄建议用wireshark抓包分析看看. 我自己以前并没有做过抓包分析,所以这篇博文可能会有很多错误,只是我自己的一个记录,路过的亲 ...

  7. TCP/IP详解卷1 - wireshark抓包分析

    TCP/IP详解卷1 - 系列文 TCP/IP详解卷1 - 思维导图(1) TCP/IP详解卷1 - wireshark抓包分析 引言 在初学TCP/IP协议时,会觉得协议是一种很抽象的东西,通过wi ...

  8. 使用wireshark抓包分析-抓包实用技巧

    目录 使用wireshark抓包分析-抓包实用技巧 前言 自定义捕获条件 输入配置 输出配置 命令行抓包 抓取多个接口 抓包分析 批量分析 合并包 结论 参考文献 使用wireshark抓包分析-抓包 ...

  9. TCP\IP协议实践:wireshark抓包分析之链路层与网络层

    目录 TCP\IP协议实践:wireshark抓包分析之链路层与网络层 从ping开始 链路层之以太网封装 ip首部 开启ping程序,开始抓包 由一个ping的结果引出来的两个协议ARP ICMP ...

随机推荐

  1. 暑期——第四周总结(Ubuntu系统安装新版eclipse双击无法打开问题 【已解决】)

    所花时间:7天 代码行:200(python)+3000(java) 博客量:1篇 了解到知识点 : Ubuntu安装新eclipse 在通过软件中心安装好eclipse之后,发现各种东西都不顺眼,不 ...

  2. 要不要学习Git(分布式版本控制系统)

    做技术的人,要不要学一学Git呢? 提出这个问题,是因为很多小伙伴还不会使用Git. 对于任何新一代的技术工具,它在业界普及都有一个过程,Git的阻碍是:学习成本.工具迭代的成本. SVN诞生于200 ...

  3. Spring MVC-从零开始-view-ViewResolver

    主要ViewResolver简介 InternalResourceViewResolver 将逻辑视图名解析为一个路径 BeanNameViewResolver 将逻辑视图名解析为bean的name属 ...

  4. JAVA 8 新特性Stream初体验

    什么是 Stream? Stream(流)是一个来自数据源的元素队列并支持聚合操作 <strong元素队列< strong="">元素是特定类型的对象,形成一个队 ...

  5. 从React-Native坑中爬出,我记下了这些

    吐槽 如果React-Native是个人,我估计已经想要打死他了... 上一篇文章 当React开发者初次走进React-Native的世界 前言 最近因为业务需要,做了一些关于React-Nativ ...

  6. MySQL 特性:Double Write

    1.什么是double write 首先要明白double write这个特性是针对谁的,日志or脏数据? 明白的是脏数据,是内存中修改后的数据页,这些数据页修改后和磁盘上存储的原数据不一致了,称为脏 ...

  7. Http协议Content-Length详解

    前言 http协议是互联网中最重要的协议之一,虽然看上去很简单,但是实际中经常遇到问题,我们就已经遇到好几次了.有长连接相关的,有报文解析相关的.对http协议不能一知半解,必须透彻理解才行.本文通过 ...

  8. 从0开始学FreeRTOS-(消息队列)-5

    ## 问题解答 曾经有人问我,FreeRTOS那么多API,到底怎么记住呢? 我想说,其实API不难记,就是有点难找,因为FreeRTOS的API很多都是带参宏,所以跳来跳去的比较麻烦,而且注释也很多 ...

  9. Coins POJ - 1742

    给出硬币面额及每种硬币的个数,求从1到m能凑出面额的个数. Input 多组数据,每组数据前两个数字为n,m.n表示硬币种类数,m为最大面额,之后前n个数为每种硬币的面额,后n个数为相应每种硬币的个数 ...

  10. 尹吉峰:使用 OpenResty 搭建高性能 Web 应用

    2019 年 8 月 31 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·成都站,原贝壳找房基础架构部工程师尹吉峰在活动上做了<使用 O ...