首页 > 系统相关 >alibaba的csb使用HttpParameters.Builder 发送请求时通过NGINX时,一些参数消失

alibaba的csb使用HttpParameters.Builder 发送请求时通过NGINX时,一些参数消失

时间:2022-09-04 23:34:29浏览次数:55  
标签:HttpParameters 调用 res builder csb 服务器 Builder

问题描述

当使用csb的HttpParameters.Builder的requestURL方法调用第三方api时,本地运行成功调用,但是当部署在服务器A并通过另一台服务器B的ng转发调用失败。

代码

        HttpParameters.Builder builder = HttpParameters.newBuilder();
//        System.out.println(url);
        builder.requestURL(url + "/****/***") // 设置请求的URL
                .api("***.***") // 设置服务名
                .version("1.0.0") // 设置版本号
                .accessKey("")
                .secretKey("=")
                .method(""); // 设置调用方式, get/post

        JSONObject params = new JOSNObject();
        //构造ContentBody对象
        ContentBody cb = new ContentBody(JSON.toJSONString(params));
        builder.contentBody(cb);
        //定义json提交方式
        builder.putHeaderParamsMap("Content-Type", "application/json");

        //设置是否生成防重放Nonce, 默认值是false, 这个功能仅在SDK1.1.4及CSB-Broker 1.1.2后支持
        builder.nonce(true);

        // 使用下面的调用方法, 可以返回更多的信息
        HttpReturn res = HttpCaller.invokeReturn(builder.build()); //然后在res里获取相关的信息
        //注:如果返回结果出现乱码(不能正常显示中文),可以使用串字符集转换方法进行转换
//            result = HttpCaller.changeCharset(result);
//            System.out.println(res.response);
        JSONObject response = JSONObject.parseObject(res.response);

问题分析

通过本地使用 wireshark 抓包、分别在A、B服务器上使用 tcpdump 命令抓包分析



如上图所示,本地调用的网络包与服务器A发送到服务器B的网络包中header相同,但是服务器B调用api的一些参数消失并发现消失参数都具有下划线,猜测与NG配置以及下划线有关

搜查结果

百度搜索得知,NG默认过滤具有下划线的header参数,即 underscores_in_headers 默认为 off。通过修改

接口成功调用!!!!!

标签:HttpParameters,调用,res,builder,csb,服务器,Builder
From: https://www.cnblogs.com/keacua/p/16656524.html

相关文章

  • HBuilder包装iOS APP上App Store的详细过程
    以前看过很多教程,然后。ITUNE管理APP功能被删除,IPA安装失败。Appuploader已有1个月的期限等问题。请参见此教程重新安装。因此,放出。很多新生开发,不知道如何包装。iosAP......
  • java Builder模式
    Builder 模式也叫建造者模式,builder模式的作用将一个复杂对象的构建与他的表示分离,一步一步创建一个复杂对象的创建型模式。在不知道内部建造细节的情况下,可以更精细的控......
  • 06 | JAVA的StringBuilder高效拼接字符串
    StringBuilder如果用+来拼接字符串速度满。我们可以提前用StringBuilder来申请一大块的内存。把他想象成一个容器。为了能高效拼接字符串,Java标准库提供了StringBuil......
  • Java常用类之StringBuffer、StringBuilder类
    由于String的特性:内容一旦声明则不可改变,如果要改变,改变的肯定是String的引用地址。那么如果一个字符串要经常改变,此时使用String就不太合适,从而使用StringBuffer或StringB......
  • mybatis 实体使用@Builder 与 @Data时,赋值错误
    最近在工作中遇到了一个问题,使用mybatis新增数据的时候,定义好一个实体类,填充对应的数据并插入表之后。根据返回的id查询的时候,发现本不应该有数据的字段有数据返回,找了......
  • ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) .append("Id",getId())防止内
    publicStringtoString(){returnnewToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE).append("Id",getId()).append("AdClientId",getAdClientId()).appe......
  • String、StringBuffer 和 StringBuilder 的区别是什么?
    String是只读字符串,它并不是基本数据类型,而是一个对象。从底层源码来看是一个final类型的字符串数组,一经定义,无法再增删改。每次对String的操作都会生成新的String......
  • StringBuilder类
    StringBuilder是字符串对象的缓冲区对象,缓冲区(出现目的,为了高效),提高String类的效率StringBuilder类的实现原理一个可变的字符序列,字符序列就是字符数组String......
  • lombok @Builder注解
    https://blog.csdn.net/baidu_35085676/article/details/89193416?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%......
  • EBS: Form Builder 10G CHECKBOX点击触发器
     在数据块(命名为REQ_QTY)添加一个CHECKBOX控件(命名为SELECT_FLAG),复选时的值=Y,未复选时的值=N; 需求复选框选中时,判断库存量是否大于等于需求量,是就允许被选中......