HttpURLConnection System.setProperty全局代理遇到的一个坑

背景今天在项目中遇到一个HttpURLConnection System.setProperty设置全局代理的坑。项目需求:公司需要开发一个企业微信单点登录的功能,会涉及到调用微信的相关接口,如果微信认证OK,再调用公司内部另一个系统的接口,获取一些用户相关权限,微信和内部权限都获取到之后就跳转到系统首页进行其它操作。项目流程:在微信中加一个菜单入口-->从微信点击菜单--&gt...
摘要由CSDN通过智能技术生成

一)背景

今天在项目中遇到一个HttpURLConnection System.setProperty设置全局代理的坑。

项目需求:公司需要开发一个企业微信单点登录的功能,会涉及到调用微信的相关接口,如果微信认证OK,再调用公司内部另一个系统的接口,获取一些用户相关权限,微信和内部权限都获取到之后就跳转到系统首页进行其它操作。

 

项目流程:在微信中加一个菜单入口-->从微信点击菜单-->调用微信相关认证接口-->调用公司内部其它项目接口-->认证OK,跳转到公司系统首页界面。

 

坑的原因:由于项目部署在公司内网服务器,在访问微信接口的时候需要通过代理方式进行外网接口请求,而内部接口不需要代理就可以请求(代理请求会报错),因为第一步先通过微信访问,先访问的时候就通过System.setProperty设置了全局代理,在微信接口验证成功之后,再访问公司内部接口就一直返回null。

为啥说是坑:因为以前做过纯微信接口访问功能,所以就设置了全局代理,把这部分代码移动新项目中就没注意,微信访问单点登录这个功能点是现成的,所以在发生产包的时候,我在模拟公司内部接口的时候,访问一直是OK的,只要用户一通过微信进入,就一直报请求失败,我再重新模拟公司内部接口也会一直失败,但我把项目重新启动之后,又可以模拟成功。这就导致了一个循环,我不断修改代码然后打包,发布生产,模拟测试,用户微信测试,模拟测试再失败,这个问题真是弄了一天,发了无数次包。有个同事最后说了一句话提醒了我,说“我这项目是不是有缓存,或者设置了什么全局变量”,刚开始还没注意,但不断测试修改代码之后,慢慢就感觉是全局代理设置这个地方出问题了,找到问题之后,换了一种临时代理方式,修改好,再发布就可以OK了。

 

二)Http请求源码:

package com.oysept.http.utils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.Input
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值