HTTP 프록시를 통한 양방향 소켓 연결을 만드는 가장 적합한 방법을 제안하려고합니다. 텔넷 스타일 프로토콜이라고 할 수 있습니다. 불행히도 NTLM 인증 (프록시 사용)은 물론 기본 및 다이제스트뿐만 아니라 앞으로 예측할 수없는 다른 인증 메커니즘도 지원해야합니다.HTTP 프록시를 통한 양방향 통신
그냥 기본이고 다이제스트라면 직접 연결을 처리 할 수는 있지만 실제로는 NTLM 인 진창에 갇히지 않으려 고합니다. 기본 AuthenticationManager API를 보면 HttpWebRequest와 매우 유사하게 보이므로 소켓/tcpclient /를 사용하거나 새로운 WebRequest 파생 클래스를 작성하는 경우 해당 기능을 활용할 수 없습니다.
HttpWebResponse로 재생하면 응답 스트림을 검색 한 후 RequestStream을 사용하여 쓸 수없는 스트림이 생성되어 동시 io 예외가 발생합니다.
허용 나는 내가 HttpWebRequest를하는과 관련된는 NetworkStream을 얻을 성가신 코드로 왔어요, 생각할 수있는 모든 가능성을 통해 실행하는 데 두 가지 방법으로 통신 : 난
.....
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream str = resp.GetResponseStream();
System.Type type = str.GetType();
PropertyInfo info = type.GetProperty("Connection", BindingFlags.NonPublic|BindingFlags.Instance| BindingFlags.Public);
object obj = info.GetValue(str, null);
type = obj.GetType();
info = type.GetProperty("NetworkStream", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
object obj2 = info.GetValue(obj, null);
NetworkStream networkStream = obj2 as NetworkStream;
상당히 반발했다. (처음에는 Mono와 작동하지 않을 것이다.) 따라서 프록시 인증의 런타임 기능을 활용할 수있는 공개 API를 사용하는 것이 더 좋은지 궁금하다.