Чарльз не перехватывает HTTP-запросы от клиента Java (клиент основан на шаблоне весеннего отдыха) в моем MAC pro

Окружающая среда: процедура MAC

Я просмотрел проблему мониторинга HTTP-трафика при использовании MonoTouch, HttpClient и Charles Proxy.

Хотя мой вопрос похож на него, мое приложение использует RestTemplate http://docs.spring.io/autorepo/docs/spring-android/1.0.x/reference/html/rest-template.html. Я могу перехватывать трафик HTTP и HTTPS всякий раз, когда запрос поступает через веб-браузеры (в частности, Safari и Chrome), тогда как когда я делаю запросы на отдых через свое приложение (которое в основном использует RestTemplate), прокси-сервер Charles не захватывает их.

Судя по ответам на приведенные выше вопросы, это должно быть что-то связанное с настройкой прокси-сервера в RestTempate. Но я разработчик .NET и хорошо знаком с fiddler, но недавно перешел на Java и новичок в Charles, поэтому было бы здорово, если бы вы могли сообщить мне конкретные подробности или свои мысли о настройке шаблона rest для использования моего прокси-сервера mac os. ..

В основном вопрос заключается в том, как настроить мой остаточный шаблон (клиент) так, чтобы веб-прокси charles мог захватывать запросы и ответы через мое приложение (клиент).

А оставшийся шаблон создается фабрикой настраиваемых запросов, которая расширяет __https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/client/SimpleClientHttpRequestFactory.html.


Похоже, мне нужно сделать что-то подобное (ссылка: http://docs.spring.io/spring-integration/reference/html/http.html#http-proxy)

<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>

person Coder    schedule 26.10.2015    source источник


Ответы (2)


У меня тоже была похожая проблема. Но я использовал JUnit и ядро ​​Java. Ниже приведена ссылка, которая помогла мне в нескольких случаях.

https://www.charlesproxy.com/documentation/configuration/browser-and-system-configuration/

вы можете перейти к JAVA APPLICATION PROXY CONFIGURATION, чтобы найти ответ.

Вы можете настроить свое Java-приложение для использования Charles в коде или в качестве аргументов командной строки для исполняемого файла Java.

System.setProperty("http.proxyHost", "127.0.0.1");

System.setProperty("http.proxyPort", "8888");

И для HTTPS тоже. Обратите внимание, что в этом случае вы также можете настроить Java так, чтобы он доверял корневому сертификату Чарльза (см. SSL-прокси).

person anubhs    schedule 17.06.2016
comment
Это не сработало для меня. Я также добавил его как vm param. Но ни один из них не работал. - person fyelci; 14.03.2019

вы не можете сделать это на уровне tomcat, вы должны настроить прокси в RestTemplate. Ссылка на этот https://stackoverflow.com/a/45188490/1743046, хотя он использует HttpClient, но я думаю, вы можете найти то же самое для RestTemplate

person lehanh    schedule 27.09.2019