Charles没有在我的MAC pro中捕获来自Java客户端(客户端基于spring rest模板)的HTTP请求

Charles没有在我的MAC pro中捕获来自Java客户端(客户端基于spring rest模板)的HTTP请求,http,proxy,fiddler,charles-proxy,webproxy,Http,Proxy,Fiddler,Charles Proxy,Webproxy,环境:macproc 我已经看过了 虽然我的问题与之类似,但我的应用程序使用的是restemplate。每当通过web浏览器(具体来说是Safari和Chrome)请求时,我都能够捕获HTTP和HTTPS流量,而当我通过我的应用程序(基本上使用RestTemplate)发出rest请求时,Charles proxy不会捕获它们。 从以上问题的答案来看,应该是在RestTempate上设置代理设置相关的内容。但我是一名.NET开发人员,对fiddler非常熟悉,但最近刚接触Java,对Charle

环境:macproc

我已经看过了

虽然我的问题与之类似,但我的应用程序使用的是restemplate。每当通过web浏览器(具体来说是Safari和Chrome)请求时,我都能够捕获HTTP和HTTPS流量,而当我通过我的应用程序(基本上使用RestTemplate)发出rest请求时,Charles proxy不会捕获它们。

从以上问题的答案来看,应该是在RestTempate上设置代理设置相关的内容。但我是一名.NET开发人员,对fiddler非常熟悉,但最近刚接触Java,对Charles来说是个新手,所以如果您能告诉我具体的细节,或者您对配置rest模板以使用mac os代理的想法,那就太好了

基本上,问题是如何配置我的rest模板(客户端),以便charles web代理能够通过我的应用程序(客户端)捕获请求和响应

rest模板由扩展的定制请求工厂实例化__https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/client/SimpleClientHttpRequestFactory.html


看起来我需要做类似的事情(参考:)


我也有类似的问题。但是我使用的是JUnit和核心Java。下面的链接在一些情况下对我有所帮助

您可以转到JAVA应用程序代理配置以找到答案

您可以将Java应用程序配置为在代码中或作为 java可执行文件的命令行参数

set属性(“http.proxyHost”、“127.0.0.1”)

set属性(“http.proxyPort”、“8888”)

还有HTTPS。请注意,您可能还需要配置Java 在这种情况下信任Charles的根证书(请参阅SSL代理)


在tomcat级别不能这样做,必须在RestTemplate中配置代理。参考这篇文章,虽然它使用了HttpClient,但我认为您可以为RestTemplate找到相同的方法,这对我不起作用。我也将其添加为vm参数。但没有一个成功。
<bean id="requestFactory"
    class="org.springframework.http.client.SimpleClientHttpRequestFactory">
    <property name="proxy">
        <bean id="proxy" class="java.net.Proxy">
            <constructor-arg>
                <util:constant static-field="java.net.Proxy.Type.HTTP"/>
            </constructor-arg>
            <constructor-arg>
                <bean class="java.net.InetSocketAddress">
                    <constructor-arg value="123.0.0.1"/>
                    <constructor-arg value="8080"/>
                </bean>
            </constructor-arg>
        </bean>
    </property>
</bean>