2009-09-23 7 views
4

나가는 HTTP 요청을 가로 채고 이전 시스템으로 결과를 반환하는 C# 응용 프로그램을 개발하려고합니다. 우리는 중단 된 웹 서비스에 Http 요청을하는 레거시 시스템을 가지고 있습니다. 나는 나가는 요청을 가로 챈 다음 새로운 웹 서비스로 보내야합니다. 응답이 돌아 오면 난 그것을 조작해야하고 레거시 시스템으로 보내야합니다. 모든 코드는 클라이언트 컴퓨터에 있어야합니다. 나는 http 리스너의 라인을 따라 뭔가 일할 것이라고 생각했지만 나는 그걸로 아무데도 가지 않을거야, 모든 제안 크게 감사하겠습니다.HTTP 트래픽을 차단하는 방법

답변

4

의견을 보내 주셔서 감사합니다. 다음은 답변입니다.

저는 Eric Lawrence의 Fiddler2을 프록시로 사용했습니다. 그런 다음 관심있는 특정 Http 요청을 가로 챈 Fiddler 확장을 작성했습니다.

+0

달콤한 해결책! –

+1

저는 제 3 자 툴이 아닌 순수한 C#에서 어떻게 그렇게 할 수 있는지에 관심이 있습니다. 하지만 멋진 솔루션. –

1

레거시 시스템이 http 프록시의 사양을 지원합니까? 그렇다면, 아마도 여러분이하고 싶은 일일 것입니다. 프록시 역할을하는 무언가를 작성하고 이전 시스템을 가리켜 야합니다.

+0

나는 보내는 HTTP 요청을 알고 있지만 나가는 요청을 캡처하는 이유는 무엇인지 오래된 코드를 수정할 수있는 권한이 없습니다. –

-2

write an HTTP Module 수 있습니다.

+0

문제는 그가 이전 웹 서비스 URL에서 서버에 액세스 할 수 없다는 것입니다. 따라서 HTTP 모듈을 호스팅 할 수 없게됩니다. –

+0

맞습니다! –

1

Dav가 제안한대로 기존 시스템에서 프록시를 사용할 수있는 경우 Foxy과 같은 리디렉션을 사용할 수 있습니다. 확실하지 않지만 일부 소프트웨어가 HTTP 전송을 위해 IE를 사용하므로 클라이언트 컴퓨터의 IE에서 HTTP 프록시를 설정해보십시오.

그렇지 않다면 본질적으로 고급 방화벽이나 라우터에서만 가능할 것으로 생각되는 TCP/IP 트래픽을 가로 채고 수정하려는 어려운 문제라고 생각합니다.

2

Windows 서버에서 실행중인 경우 원하는 경우 동일한 호스트 (localhost)를 포함한 다른 서버로 요청을 리디렉션하기 위해 'hosts'- 파일을 편집 할 수 있습니다. 거기에서 요청과 응답을 번역하는 중간 웹 서비스를 가질 수 있습니다.

+0

웹이 아닌 PC에서 번역을하고 싶지만 선택 사항입니다. –

+0

아,이 레거시 애플리케이션은 서버 앱이 아니라 사람들의 PC에 설치된 클라이언트 애플리케이션입니다. – Digitalex

+0

예, 맞습니다. 소스 코드가 없기 때문에 이전 버전의 프로그램이므로 원래 웹 서비스에 연결되어 있다고 생각하도록 앱을 속일 필요가 있습니다 –

0

tcpmon은 TCP 연결에서 흐르는 데이터를 모니터링하기위한 오픈 소스 유틸리티입니다. tcpmon은 클라이언트와 서버 사이에 배치하여 사용합니다. 클라이언트가 tcpmon에 연결되도록 만들어지면 tcpmon은 데이터를 서버로 전달하고 GUI에 표시합니다. https://tcpmon.dev.java.net/

관련 문제