ASP.NET이 좀 그렇습니다.
ASP.NET의 요청구조는 우리가 흔히 아는 방식이랑 많이 다르더군요.
보통 Java 쪽 웹서버는 그냥 흔히 생각하는 form(또는 링크)을 사용하여 GET, POST가 이뤄지지만, ASP.NET 우리가 흔히 생각하는 그런 form이 아니고, 현 상태를 유지하기 위해 암호화된 값이 있는 hidden input이 있고...
경우에 따라서는 form에서 submit이 일어나지 않고 javascript를 통해서 전혀 새로운 요청이 만들어지기도 하고...
여튼 눈에 보이는 필드 값들만 왔다갔다하는 구조가 아니었습니다.
웹브라우져에서 ASP.NET 웹사이트 이용할 때 패킷 떠보시면, 아시겠지만, 특정 파라미터들이 암호화가 되어있습니다.
(예전에 잠깐 ASP.NET 프로그래밍을 해봤는데, .NET Framework라는 걸로 ASP.NET을 짜게되면 페이지를 거의 ASP 커스텀 태그로 작성하게됩니다. 이런 넘들이 서버사이드에서 변환처리되면 정말 무시무시한 HTML들로 바뀌더군요. 포스트백이라는 특이한 개념도 있고... -_-;)
여튼 눈에 보이는 필드값만 가지고 요청 바디를 만들어서 보내면 거의 모든 상황에서 올바르지 않은 응답이 돌아왔습니다. 쿼리는 날렸지만 쿼리가 전혀 적용되지 않은 결과 페이지가 뜨던가... 아예 서버 오류가 나버린다던가... 등등
만약 ASP.NET 웹사이트를 파싱하려면, 웹브라우져를 그대로 시뮬레이션하는 듯한 파서를 작성하지 않으면 안될 것 같았습니다.
참고로 저는 전국버스 앱 개발자인데, 저도 저 its.ulsan.kr 때문에 개고생 좀 했습니다. 결국은 상당부분을 의도했던대로 파싱하지 못했습니다. 어느 정도 정보제공에 필요한 부분은 처리를 했습니다만...




파싱이 안되는게 아니라, 웹서버가 다른 응답을주거나 응답을 하지 않는거 아닌지요?
일부 사이트에서는 프로그램이나 로봇등을 차단하기위해.. 정상적인 HttpHeader 정보가 없는경우 응답을 주지 않게 만들기도 합니다.
아마도 위 코드에는 header 가 하나도 없을겁니다. HttpClient 등을 이용해서 헤더정보들을 추가해보시길..