Я не могу имитировать сообщение HTML-формы с помощью HttpClientMultipartFormDataContent

#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. УТОЧНЕНИЕ: как только это сработает, я должен добавить параметр пароля и загрузить файл, все в том же сообщении.