#c# #vb.net #httpclient
#c# #vb.net #httpclient
Вопрос:
При отправке этого HTML-кода в веб-браузере:
<form method="post" action="https://cot.arba.gov.ar/TransporteBienes/SeguridadCliente/presentarRemitos.do">
<input type="text" name="user" value="x"/>
<input type="submit"/>
</form>
Я получаю этот результат (ожидаемый результат, потому что я не отправляю параметр пароля):
<TBError>
<tipoError>DATO</tipoError>
<codigoError>08</codigoError>
<mensajeError>Error de parámetro: Parámetro requerido: password</mensajeError>
</TBError>
Но… когда я отправляю с помощью.NET framework с этим кодом:
Using httpClient As New HttpClient
Dim Form As New MultipartFormDataContent
Form.Add(New StringContent("x"), "user")
Dim response = Await httpClient.PostAsync("https://cot.arba.gov.ar/TransporteBienes/SeguridadCliente/presentarRemitos.do", Form)
Dim sd = response.Content.ReadAsStringAsync().Result
MessageBox.Show(sd)
End Using
Я получаю этот результат (результат НЕ указан и отличается от первого образца):
<TBError>
<tipoError>DATO</tipoError>
<codigoError>87</codigoError>
<mensajeError>El formulario multipart enviado es incorrecto. Verifique las especifiaciones para la aplicaci�n cliente.</mensajeError>
</TBError>
Вопрос в том, как я могу получить тот же результат, что и при использовании образца html.NET framework?
Спасибо
Комментарии:
1. Чтобы опубликовать веб-форму с помощью HttpClient / WebRequest, вы должны передать все части, составляющие данные формы, которые включают все
INPUT
элементы, видимые или невидимые, плюс__VIEWSTATE
__VIEWSTATEGENERATOR
пары значений и, если они присутствуют. Убедитесь, что вы можете принимать файлы cookie. Кроме того, сервер может перенаправить вас на ту же страницу входа при первом подключении, поэтому на всякий случай будьте готовы обработать перенаправление 301/302.2. Перенаправление также может быть 200 (
OK
), но сLocation
установленным заголовком. Это можно обработать настройкойAllowAutoRedirect = true
.3. УТОЧНЕНИЕ: как только это сработает, я должен добавить параметр пароля и загрузить файл, все в том же сообщении.