Ваш код выглядит нормально.Я считаю, что он отправляет POST правильно.Я думаю, что проблема не здесь.Когда вы используете браузер, вы сначала выполняете как минимум один HTTP GET, чтобы попасть в форму.Когда вы делаете это, сервер создает для вас HTTP-сессию и возвращает свой идентификатор в заголовке ответа Set-Cookie.Когда вы отправляете форму с помощью браузера, он отправляет этот заголовок (Cookie) обратно, чтобы сервер мог идентифицировать сеанс.
Когда вы работаете с Java, вы пропускаете первый этап (HTTP GET).Итак, первое, что вы делаете, это POST, пока у вас еще нет сессии.Я не знаю, какова логика этой страницы ASP, но я думаю, что она просто отклоняет такие запросы.
Итак, сначала проверьте это предположение.Вы можете использовать плагин для Firefox с именем LiveHttpHeaders.Установите его и выполните операцию вручную.Вы увидите все HTTP-запросы и ответы.Спаси их.Убедитесь, что идентификатор сеанса отправляется обратно с сервера на клиент.Теперь реализуйте то же самое в Java.
Кстати, часто ситуация усложняется, когда сервер отправляет несколько ответов на перенаправление.В этом случае вы должны следовать им.HttpConnection имеет метод setFollowRedirects ().Назовите это с параметром true.
BTW2: Apache HttpClient является идеальной заменой HttpConnection.он делает все и очень рекомендуется при реализации таких задач.
Вот и все.Удачи.Иногда это не легко ...