2

웹 요청을 터널링 할 수 있는지, 물론 무엇을 사용하고 구현하는지 알고 싶습니다.iPhone에서 웹 요청 터널링하기

이미 & 소켓 연결을 훌륭하게되어 내 사용자 정의 프록시 서버를 통해 데이터를 수신 보낼 NSInputStreamNSOutputStream의 서브 클래스를 작성했습니다.

나는 NSURLRequest있는 UIWebView의 대표를 구현하기 위해 노력했다,하지만 난 있는 UIWebView 만든 모든 HTTP 요청을 캡처 할 수 없습니다.

미리 감사드립니다.

+0

우리는 무엇을 성취하려고하는지 더 자세히 알고 싶습니다. 시스템 전체의 HTTP (S)/SOCKS 프록시 지원이 원하는 것을 제공하지 않는 이유가 있습니까? –

+0

키 교환을 위해 RSA 암호화를 사용하는 사용자 지정 프록시 서버를 사용하고 데이터를 전송하기 위해 AES 암호화를 사용하므로 SOCKS 프록시가 문제가되지 않습니다. 저는 실제로 Java 코드를 iPhone으로 포팅하려고 시도하고 있습니다 만, 이제는 HTTP 관련 연결의 터널링에 막혀 있습니다. – Pada

답변

0

카테고리를 사용하여 모든 관련 메소드 호출 (아래 템플리트)을 사용할 수 있습니다. 그러나 드래곤을 조심하고 이것을하기 전에 시스템 프록시 경로를 사용해보십시오.

있는 UIWebView + PrivateProxy.h

@interface UIWebView (PrivateProxy) 
     - (void)loadRequest:(NSURLRequest *)request; 

@end 

있는 UIWebView + 물론 당신은 아마 예를 들어, 더 메소드를 오버라이드 (override) 할 것이다 오프 PrivateProxy.m

@implementation UIWebView (PrivateProxy) 
    - (void)loadRequest:(NSURLRequest *)request { 
     if(request.something ....) { 
      // handle yourself ... 
     } else { 
      [super loadRequest:request]; // use stanadrd implementation 
     } 
    } 
@end 

reload, stopLoading 등

+0

Maria에게 감사드립니다. 표준 SOCKS 프록시를 사용하고 싶지 않은 이유에 대한 첫 번째 게시물에 대한 의견을 남겼습니다. 나는 이미 UIWebView의 하위 클래스를 만들려고했는데 한 번만 트리거 된 loadRequest 메서드를 구현했습니다. UIView가 부모이고 loadRequest 함수가 없기 때문에 [super loadRequest : request]를 카테고리 화 된 UIWebView 클래스로 호출 할 수 없기 때문에 Swizzling 메서드를 사용해 봐야하는지 잘 모르겠습니다. Swizzling 메서드를 사용하면 loadRequest가 한 번 호출되는 문제를 해결할 수 있다고 생각합니까? 이미지가있는 www.google.com의 경우에도 – Pada

+0

내 대답은 UIWebView의 하위 클래스가 아니므로 유의하십시오. 범주를 사용하여 기존 클래스 동작을 확장하므로 시스템 전체에 영향을 미칩니다. 카테고리에 대한 자세한 내용은 http://macdevelopertips.com/objective-c/objective-c-categories.html –

+1

아아 .. 페니가 방금 떨어졌습니다. 나는 마침내 그 질문을 이해했다고 생각한다. 이것이 당신에게 효과가 있습니까? http://www.icab.de/blog/2009/08/18/url-filtering-with-uiwebview-on-the-iphone/ –