当前位置: 首页 > news >正文

okhttp Stream Load 含认证请求重定向

http 请求 StarRocksStream Load,遇到错误码:307

<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.12.0</version></dependency>
publicstaticvoidmain(String[]args){OkHttpClienthttpClient=newOkHttpClient.Builder().connectTimeout(30,TimeUnit.SECONDS).readTimeout(120,TimeUnit.SECONDS).writeTimeout(120,TimeUnit.SECONDS).followRedirects(true)// 默认 true,跟 301/302/303/307/308.followSslRedirects(true)// 默认 true,跟 https↔https.build();try{Stringbody="{\"bid_cid\":1000,\"bid_realized_amount\":0,\"trend_side\":\"BUY\",\"ask_user_id\":11377,\"bid_id\":0,\"mtime\":1779138579000,\"ask_id\":0,\"volume\":19,\"ask_realized_amount\":0,\"buy_fee\":0,\"ask_cid\":1000,\"price\":2119.5,\"ctime\":1779138579000,\"id\":21023454,\"bid_user_id\":11377,\"sell_fee\":0,\"source_table\":\"co_trade_e_ethusdt\",\"binlogFile\":\"mysql-bin.038191\",\"binlogPosition\":31850563,\"op\":\"c\",\"ts\":\"2026-05-18 21:09:40\",\"dt\":\"2026-05-18\"}";// String url = "http://192.168.154.2:18040" + "/api/" + "ods"// + "/" + "ods_co_trade_history" + "/_stream_load";Stringurl="http://192.168.154.2:8030"+"/api/"+"ods"+"/"+"ods_co_trade_history"+"/_stream_load";RequestBodyrequestBody=RequestBody.create(body,MediaType.parse("application/json; charset=utf-8"));Requestrequest=newRequest.Builder().url(url).put(requestBody).addHeader("label","flink_stream_load_label1").addHeader("format","json").addHeader("strip_outer_array","false").addHeader("Expect","100-continue").addHeader("Authorization",Credentials.basic("root","123456")).build();Responseresponse=httpClient.newCall(request).execute();StringrespBody=response.body()!=null?response.body().string():"";booleanok=response.isSuccessful();System.out.println(respBody);System.out.println(response);}catch(Exceptione){e.printStackTrace();}}

问题记录

no valid Basic authorization

{"TxnId":-1,"Label":"flink_ods_0_1779181518093_ods_co_trade_history","Db":"ods","Table":"ods_co_trade_history","Status":"Fail","Message":"no valid Basic authorization","NumberTotalRows":0,"NumberLoadedRows":0,"NumberFilteredRows":0,"NumberUnselectedRows":0,"LoadBytes":0,"LoadTimeMs":0,"BeginTxnTimeMs":0,"StreamLoadPlanTimeMs":0,"ReadDataTimeMs":0,"WriteDataTimeMs":0,"CommitAndPublishTimeMs":0}

当重定向到不同主机时,OkHttp 会主动剥离 Authorization 头(安全策略)。

解决:自定义 Interceptor 强制保留认证头

OkHttpClienthttpClient=newOkHttpClient.Builder().addNetworkInterceptor(newRedirectAuthInterceptor("root","123456")).connectTimeout(30,TimeUnit.SECONDS).readTimeout(120,TimeUnit.SECONDS).writeTimeout(120,TimeUnit.SECONDS).followRedirects(true)// 默认 true,跟 301/302/303/307/308.followSslRedirects(true)// 默认 true,跟 https↔https.build();/** * 关键:强制在重定向后保留 Authorization 头 */staticclassRedirectAuthInterceptorimplementsInterceptor{privatefinalStringauthHeader;RedirectAuthInterceptor(Stringuser,Stringpassword){this.authHeader=Credentials.basic(user,password);}@OverridepublicResponseintercept(Chainchain)throwsIOException{Requestoriginal=chain.request();Requestrequest=original.newBuilder().header("Authorization",authHeader).build();returnchain.proceed(request);}}
{"TxnId":39821,"Label":"flink_stream_load_label2","Db":"ods","Table":"ods_co_trade_history","Status":"Success","Message":"OK","NumberTotalRows":1,"NumberLoadedRows":1,"NumberFilteredRows":0,"NumberUnselectedRows":0,"LoadBytes":418,"LoadTimeMs":76,"BeginTxnTimeMs":2,"StreamLoadPlanTimeMs":5,"ReadDataTimeMs":0,"WriteDataTimeMs":49,"CommitAndPublishTimeMs":19}
错误码:307

.followRedirects(false)

Response{protocol=http/1.1,code=307,message=Temporary Redirect,url=http://192.168.154.2:8030/api/ods/ods_co_trade_history/_stream_load}

.followRedirects(true)

Response{protocol=http/1.1,code=200,message=OK,url=http://192.168.154.2:18040/api/ods/ods_co_trade_history/_stream_load}
http://www.jsqmd.com/news/856459/

相关文章:

  • 别再硬套RBAC了!用Filebrowser的‘文件夹规则’搞定多级文件权限(附实战配置)
  • RT-Thread Studio下RA2L1 GPIO开发:从环境搭建到按键中断实战
  • 智能家居图片素材 助力智慧生活内容高效创作
  • Perplexity新闻搜索准确率骤降41.6%?——来自CNCF认证环境工程师的7层环境审计清单
  • RAG系统检索结果优化策略
  • RollBack RX Professional 快照管理避坑指南:锁定、任务属性设置与常见误区解析
  • 卫星转发器核心用途及实践价值 GNSS卫星转发器 北斗转发器
  • 手把手教你用示波器抓CAN总线波形:从SOF到EOF的保姆级解析(附位填充实战)
  • 2026年房屋征收评估指南:如何挑选值得信赖的公司
  • 告别繁琐!小鹿管家如何一键破解“千品千面”批量投放难题
  • 线下技术沙龙:AI Coding深度实践LLM应用分享
  • 卡神跳槽Anthropic:要搞“AI教AI“这件最危险的事!
  • SpringBoot项目实战:5分钟集成EasyExcel,搞定带复杂合计与中文金额的Excel导出
  • 2026年AI模型接口中转平台生产环境实测:主流服务商性能与成本综合排名全指南
  • 光伏出口退税取消后首月数据观察(2026年5月)
  • Perplexity+Alma+Chandra三库联动搜索法(天体物理实验室内部文档流出):实现高红移类星体多波段交叉验证
  • 华为交换机DHCP中继配置保姆级教程:从抓包分析到静态路由避坑
  • PSRAM与DDR的异同总结
  • 七牛云:批量将标准存储文件转为归档直读存储
  • 深入解析R3nzSkin:基于内存钩子技术的英雄联盟皮肤修改器开发指南
  • 亚马逊太卷了怎么办?越来越多跨境卖家,正在转向外贸独立站
  • 为内部知识问答Agent配置Taotoken作为多模型后备调用源
  • 终极指南:如何用PowerShell一键安装Windows包管理器Winget [特殊字符]
  • 从开源工具到临床实践:手把手教你用3D Slicer实现前列腺超声与MRI的弹性配准
  • 你的舵机控制代码可能一直写错了:从PWM占空比公式到SG90/MG996R舵机平滑运动避坑指南
  • 跨境服装电商出海增长新范式:集之互动以AI技术,破解合规、本土化、成本三大全球难题
  • 2026数说安全《中国AI赋能网络安全全景图》权威解读:悬镜安全位居AI赋能软件供应链安全榜首,领航数字供应链安全新纪元
  • 【AI】了解ChatMemory 底层实现机制
  • 别再折腾虚拟机了!Win10/Win11用Docker Desktop一键部署CVAT标注平台(附国内镜像加速)
  • 【Redis | 第一篇】Redis常见命令