отправка запросов http получение и обработка результата

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by CSharpA, 11 Oct 2018.

  1. CSharpA

    CSharpA New Member

    Joined:
    11 Oct 2018
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Всем привет!
    Учусь писать приложение на C# пока делаю все в на шаблоне консольного приложения.

    так вот немного теории того что должно уметь мое приложение
    Приложение делает авторизацию на сервере

    далее приложение делает еще один запрос такого типа
    type=togetthedetails&id=zfvf456d
    сервер при этом вернет ответ типа balans - 10

    далее

    Приложение отправляет на ресурс запрос типа type=replacesession&id=zfvf456d&win dowslogin=Саша
    сервер при этом вернет ответ типа status - expect

    после чего приложение должно начать делать запросы каждую секунду в течении одной минуты
    запрос такой
    type=status&id=zfvf456d&windowslogi n=Саша
    сервер при этом может ответить expect и если он так ответил и минута еще не прошла приложение должно продолжать делать такие запросы пока не получит ответ типа
    Port - 15987, Login - Саша, Password - S1z8Q4tW1, ip - 152.54.42.198, type - remoteapp

    все значения этих данных необходимо положить в отдельные переменные

    так вот у меня проблема в следующем

    подключиться к сайту и получить ответ у меня получилось но я никак не могу нафти информацию о том как условием проверить что в ответе, ка кразложить ответ на переменные, ка кзапустить цикл на одну минуту что бы делать запросы, и еще не могу понять как сночало подключится к сайту а затем отправлять запросы не один а несколько запросов

    вот код моего приложения

    Код:

    Код
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.IO;

    namespace ConsoleApp1
    {
    class Program
    {
    static void Main(string[] args)
    {

    HttpWebResponse result = null;
    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://мой сайт/handlers/exchange/1c_exchange.php?");
    req.UserAgent = "Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)";
    req.Credentials = new NetworkCredential("admin", "admin");
    req.Method = "POST";
    req.ContentType = "application/x-www-form-urlencoded";

    byte[] SomeBytes = null;
    string FormParams = "type=sale&mode=checkauth";
    SomeBytes = Encoding.UTF8.GetBytes(FormParams);
    req.ContentLength = SomeBytes.Length;
    Stream newStream = req.GetRequestStream();

    newStream.Write(SomeBytes, 0, SomeBytes.Length);
    newStream.Close();
    result = (HttpWebResponse)req.GetResponse();

    // выводим результат в консоль
    StreamReader myStreamReader = new StreamReader(result.GetResponseStream(), Encoding.GetEncoding(1251));
    string subString1 = myStreamReader.ReadToEnd();

    Console.WriteLine(subString1);


    Console.Read();

    }
    }
    }
     
  2. besfamilnyi

    besfamilnyi Member

    Joined:
    5 Jun 2012
    Messages:
    45
    Likes Received:
    10
    Reputations:
    0
    Ну коли всё равно вам пока никто не ответил, попробую подсказать с логикой, но я к сожалению не знаю си шарп.
    Синтаксис и операторы/методы в сишарпе тоже не знаю.
    у вас должно примерно что то получиться типа такого:
    Code:
    этот цикл например отработает одну минуту, срабатывание через каждую секунду
    строка string_resp;
    int i=0;
    while (i<60)
    {
    http_запрос_на_ваш_сервер;
    string_resp=response_сервера;
         if( строка string_resp.Pos("login")|| string_resp.Pos("Password") )//если в строке ответа есть вхождение "login" или "Password"
         {
         break;//выходим
          }
    i ++;
    Sleep(1000); //пауза 1000 миллисекунд.
    }
    далее получается что в string_resp у вас есть необходимые данные, логин, пароль, айпи, парсим их в нужные переменные. Незаю как в сишарпе, чем удобно парсить, но я в с++ билдере например для этого обычно использую строковые функции - delete, substring