Ответ 1
var request = WebRequest.Create("http://foo");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write("field=value");
}
Мне нужно "отправить" некоторые данные на внешний веб-сайт, используя
HttpWebRequest
объект из моего приложения (рабочий стол) и получить ответ
обратно в мое приложение через объект HttpWebResponse
.
Но веб-страница, на которой я размещаю данные, имеет текстовые поля с динамическими именами.
Как я могу получить имя этих текстовых полей и опубликовать данные в HttpWebResquest
?
Например, когда я загружаю страницу, имя текстового поля похоже на это U2FsdGVkX183MTQyNzE0MrhLOmUpqd3eL60xF19RmCwLlSiG5nC1H6wvtBDhjI3uM1krX_B8Fwc
, но когда я обновляю имя страницы, перехожу к этому U2FsdGVkX182MjMwNjIzMPAtotst_q9PP9TETomXB453Mq3M3ZY5HQt70ZeyxbRb118Y8GQbgP8
.
Спасибо за любые предложения.
var request = WebRequest.Create("http://foo");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write("field=value");
}
Вы можете использовать эти имена XPath, например. и пользователь им нравится:
byte[] data = new ASCIIEncoding().GetBytes("textBoxName1=blabla");
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost/myservlet");
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
httpWebRequest.ContentLength = data.Length;
Stream myStream = httpWebRequest.GetRequestStream();
myStream.Write(data,0,data.Length);
myStream.Close();
Похоже, вам нужно будет получить страницу с HttpWebRequest и проанализировать содержимое соответствующего HttpWebResponse, чтобы узнать имена текстовых полей. Затем вы отправляете значения на страницу с помощью другого HttpWebRequest.
Итак, в основном, вам нужно сделать следующее:
Я использую эту функцию для публикации данных. Но URL-адрес, который вы передаете, должен быть отформатирован как таковой, например
http://example.com/login.php?userid=myid&password=somepassword
Private Function GetHtmlFromUrl(ByVal url As String) As String
If url.ToString() = vbNullString Then
Throw New ArgumentNullException("url", "Parameter is null or empty")
End If
Dim html As String = vbNullString
Dim request As HttpWebRequest = WebRequest.Create(url)
request.ContentType = "Content-Type: application/x-www-form-urlencoded"
request.Method = "POST"
Try
Dim response As HttpWebResponse = request.GetResponse()
Dim reader As StreamReader = New StreamReader(response.GetResponseStream())
html = Trim$(reader.ReadToEnd)
GetHtmlFromUrl = html
Catch ex As WebException
GetHtmlFromUrl = ex.Message
End Try
End Function
Первая часть вашей проблемы: Возможно, дерево HTML является стабильным. Затем вы можете найти свой путь к текстовому полю вашего interrest с XPath. Используйте XmlReader, XDocument и Linq, чтобы просмотреть его.