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);
        }
 
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5