POST - запрос возвращает одну и ту же строку ответа, в независимости от параметров - C#
Формулировка задачи:
project1.zip
Ключ поиска берется из буфера обмена.
Есть сайт с возможностью поиска. Почему-то программно поиск не осуществляется (все время возвращается заглавная страница поиска).
Решение задачи: «POST - запрос возвращает одну и ту же строку ответа, в независимости от параметров»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; using System.IO; using System.Web; namespace BylinsStuff { public partial class Form1 : Form { //адрес главной страницы сайта для запроса static string MainPageAddress = @"http://www.mudportal.ru/objects"; //содержимое буфера обмена static string ClipboardString = string.Empty; //лог static void Log(string s) { /*try { System.IO.File.AppendAllText(FileNameLog, DateTime.Now.ToString(@"dd.MM.yyyy HH:mm:ss ") + s + System.Environment.NewLine); } catch (Exception ex) { Console.WriteLine(@"Ошибка при записи файла лога " + FileNameLog + @": " + ex.Message); } //Console.WriteLine(s); //Console.Read();*/ MessageBox.Show(s); } //возвращает html-код страницы static string GetHTML(string url, string data) { try { string CodePage = @"utf-8"; //Byte[] byteArray = Encoding.ASCII.GetBytes(@"name=" + System.Web.HttpUtility.UrlEncode(data)); Byte[] byteArray = Encoding.ASCII.GetBytes(@"name=" + data); HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = @"POST"; req.Credentials = CredentialCache.DefaultCredentials; req.Timeout = 10000; req.ContentType = @"application/x-www-form-urlencoded"; req.ContentLength = byteArray.Length; Stream reqStream = req.GetRequestStream(); reqStream.Write(byteArray, 0, byteArray.Length); reqStream.Close(); HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); if (resp.StatusCode == HttpStatusCode.OK) { StreamReader sr = new StreamReader(resp.GetResponseStream(), System.Text.Encoding.GetEncoding(CodePage)); string content = sr.ReadToEnd(); sr.Close(); resp.Close(); return content; } else { return string.Empty; } } catch (Exception ex) { Log(@"ошибка: " + ex.Message); return string.Empty; } } //делает запрос к оналйн-базе вещей и выводит его результат static void MakeRequest(TextBox t) { string newClipboardString = Clipboard.GetText(); if (newClipboardString != ClipboardString) { ClipboardString = newClipboardString; if (ClipboardString != string.Empty) { t.Text = GetHTML(MainPageAddress, ClipboardString); } //MessageBox.Show(ClipboardString); } } public Form1() { InitializeComponent(); Form1_Resize(null, null); } //изменение размера элементов управления при изменении размеров формы private void Form1_Resize(object sender, EventArgs e) { textBox1.Left = 0; textBox1.Top = 0; textBox1.Width = Width; textBox1.Height = Height; } //таймер private void timer1_Tick(object sender, EventArgs e) { MakeRequest(textBox1); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д