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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д