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