non static field using c#

SlipDez

Client
Регистрация
18.07.2018
Сообщения
374
Благодарностей
70
Баллы
28
Пытаюсь создать класс заготовку Post запроса через using а другими классами вызывать этот класс и использовать немного меняя, но почему-то меня растреливает ошибками как из автомата хотя сам код ничего не подсвечивает


C#:
    public class TestClass{
        //конструктор данных
        public Instance instance;
           public IZennoPosterProjectModel project;
        public string cookie{get;}
        public string authorization {get;}
        public string timestamp {get;}
        public string bearer {get;}
        
        public string UserAgent;
        public string Proxy;
        public string headers_include;
        public string data;
        public string url;
        
        //Конструктор данных
        public TestClass(Instance instance, IZennoPosterProjectModel project, string cookie, string authorization="null", string timestamp="null", string bearer="null"){
        this.instance=instance;
        this.project=project;   
        this.twitter_cookie=twitter_cookie;
        this.authorization= authorization;
        this.timestamp=timestamp;
        this.bearer=bearer;
        }
        
        public class post_request{
            public string send_post (string url, string data){
                UserAgent = project.Profile.UserAgent;
                Proxy =  instance.GetProxy();
                string answerRequest = ZennoPoster.HTTP.Request(
                HttpMethod.POST,
                url,
                data,
                "application/json",
                Proxy,
                "UTF-8",
                ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
                60 * 1000,
                cookie,
                UserAgent,
                true,
                5,
                AdditionalHeaders: new []
                {
                    $"authorization: {authorization}"+"," +
                    $"timestamp: {timestamp}"+"," +
                    $"bearer: {bearer}"
                }
            );
            return answerRequest;
        }
        }
        public class Like{
            public string post{get;}
            public Like (string post){
                this.post=post;
                
            post_request post_request = new post_request();
            url  ="google.com";
            data = "{\"variables\":{\"post\":\"{-Variable.post-}\"},\"value\":\"fjdskmzzzz\"}";
            string response = post_request.send_post(url,data);
            return response;
        }
            
            
        }
    }   
}
Ошибки формата

108804
 

SlipDez

Client
Регистрация
18.07.2018
Сообщения
374
Благодарностей
70
Баллы
28
Буду признателен если подскажите как лучше реализовать создание заготовки класса и вызов с изменением параметров( можно на словах)

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

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 030
Благодарностей
544
Баллы
113
В конструкторе класса TestClass пытаешь присвоить значение переменной twitter_cookie которой у тебя вообще нет, и присвоить ей значение которого даже нету в в параметрах конструктора.

В методе send_post пытаешь вызвать целую гору переменных которые у тебя находятся в другом классе, не создавая экземпляра этого класса.

В классе LIke тоже самое, переменные не создавая экземпляра, так еще и return в конструкторе класса прописан.

Что бы код подсвечивало, создай кубик проекта визуал студии и туда закинь, всё подсветит

Случайно не нейросеть писала?)
 
Последнее редактирование:
  • Спасибо
Реакции: SlipDez

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 030
Благодарностей
544
Баллы
113
Есть у меня вот такие заготовочки.
C#:
    internal class GetRequest
    {
        public string Responce { get; set; }
        public string Accept { get; set; }
        public string Host { get; set; }
        public string Referer { get; set; }
        public string UserAgent { get; set; }
        public string ContentType { get; set; }
        public WebProxy Proxy { get; set; }
        public Dictionary<string, string> Headers { get; set; }

        private string Adress;
        HttpWebRequest Request;
        readonly IZennoPosterProjectModel project;

        public GetRequest(string Adress,IZennoPosterProjectModel project)
        {
            this.project = project;
            this.Adress = Adress;
            Headers = new Dictionary<string, string>();
        }
        public void Run(System.Net.CookieContainer cookieContainer)
        {
            Request = (HttpWebRequest)WebRequest.Create(Adress);
            Request.Method = "GET";
            Request.CookieContainer = cookieContainer;
            Request.Proxy = Proxy;
            Request.Accept = Accept;
            Request.Host = Host;
            Request.Referer = Referer;
            Request.UserAgent = UserAgent;
            Request.ContentType = ContentType;
            foreach (var pair in Headers)
            {
                Request.Headers.Add(pair.Key, pair.Value);
            }

            try
            {
                HttpWebResponse response = (HttpWebResponse)Request.GetResponse();
                var stream = response.GetResponseStream();
                if (stream != null) Responce = new StreamReader(stream).ReadToEnd();
            }
            catch (Exception e)
            {
                project.SendErrorToLog(e.Message,true);
            }
        }

    }
C#:
internal class PostRequest
    {
        readonly IZennoPosterProjectModel project;
        public string Responce { get; set; }
        public string Accept { get; set; }
        public string Host { get; set; }
        public string Referer { get; set; }
        public string UserAgent { get; set; }
        public string Data { get; set; }
        public string ContentType { get; set; }
        public WebProxy Proxy { get; set; }
        private string Adress;
        public Dictionary<string, string> Headers { get; set; }
        HttpWebRequest Request;
        public PostRequest(string Adress, IZennoPosterProjectModel project)
        {
            this.project = project;
            this.Adress = Adress;
            Headers = new Dictionary<string, string>();
        }


        public void Run(System.Net.CookieContainer cookieContainer)
        {
            Request = (HttpWebRequest)WebRequest.Create(Adress);
            Request.Method = "POST";
            Request.CookieContainer = cookieContainer;
            Request.Proxy = Proxy;
            Request.Accept = Accept;
            Request.Host = Host;
            Request.ContentType = ContentType;
            Request.Referer = Referer;
            Request.UserAgent = UserAgent;

            byte[] sendData = Encoding.UTF8.GetBytes(Data);
            Request.ContentLength = sendData.Length;
            Stream sendStream = Request.GetRequestStream();
            sendStream.Write(sendData, 0, sendData.Length);
            sendStream.Close();

            foreach (var Pair in Headers)
            {
                Request.Headers.Add(Pair.Key, Pair.Value);
            }

            try
            {
                HttpWebResponse response = (HttpWebResponse)Request.GetResponse();
                var stream = response.GetResponseStream();
                if (stream != null) Responce = new StreamReader(stream).ReadToEnd();
            }
            catch (Exception e)
            {
                project.SendErrorToLog(e.Message,true);
            }
        }

    }
 
  • Спасибо
Реакции: SlipDez и djaga

SlipDez

Client
Регистрация
18.07.2018
Сообщения
374
Благодарностей
70
Баллы
28
Sherminator

Не, писал человек который не особо разбирается в коде, эт я))
Да, мне говорили что лучше использовать редакторы которые подсвечивают синтаксис, теперь понимаю почему)


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

Синтаксис как я понимаю должен быть
C#:
TestClass exemlyar = new TestClass();
но не совсем понимаю куда эту конструкцию вставлять, внутрь нового класса?
По return честно говоря не понял, так нельзя делать?)
 

SlipDez

Client
Регистрация
18.07.2018
Сообщения
374
Благодарностей
70
Баллы
28
Есть у меня вот такие заготовочки.
C#:
    internal class GetRequest
    {
        public string Responce { get; set; }
        public string Accept { get; set; }
        public string Host { get; set; }
        public string Referer { get; set; }
        public string UserAgent { get; set; }
        public string ContentType { get; set; }
        public WebProxy Proxy { get; set; }
        public Dictionary<string, string> Headers { get; set; }

        private string Adress;
        HttpWebRequest Request;
        readonly IZennoPosterProjectModel project;

        public GetRequest(string Adress,IZennoPosterProjectModel project)
        {
            this.project = project;
            this.Adress = Adress;
            Headers = new Dictionary<string, string>();
        }
        public void Run(System.Net.CookieContainer cookieContainer)
        {
            Request = (HttpWebRequest)WebRequest.Create(Adress);
            Request.Method = "GET";
            Request.CookieContainer = cookieContainer;
            Request.Proxy = Proxy;
            Request.Accept = Accept;
            Request.Host = Host;
            Request.Referer = Referer;
            Request.UserAgent = UserAgent;
            Request.ContentType = ContentType;
            foreach (var pair in Headers)
            {
                Request.Headers.Add(pair.Key, pair.Value);
            }

            try
            {
                HttpWebResponse response = (HttpWebResponse)Request.GetResponse();
                var stream = response.GetResponseStream();
                if (stream != null) Responce = new StreamReader(stream).ReadToEnd();
            }
            catch (Exception e)
            {
                project.SendErrorToLog(e.Message,true);
            }
        }

    }
C#:
internal class PostRequest
    {
        readonly IZennoPosterProjectModel project;
        public string Responce { get; set; }
        public string Accept { get; set; }
        public string Host { get; set; }
        public string Referer { get; set; }
        public string UserAgent { get; set; }
        public string Data { get; set; }
        public string ContentType { get; set; }
        public WebProxy Proxy { get; set; }
        private string Adress;
        public Dictionary<string, string> Headers { get; set; }
        HttpWebRequest Request;
        public PostRequest(string Adress, IZennoPosterProjectModel project)
        {
            this.project = project;
            this.Adress = Adress;
            Headers = new Dictionary<string, string>();
        }


        public void Run(System.Net.CookieContainer cookieContainer)
        {
            Request = (HttpWebRequest)WebRequest.Create(Adress);
            Request.Method = "POST";
            Request.CookieContainer = cookieContainer;
            Request.Proxy = Proxy;
            Request.Accept = Accept;
            Request.Host = Host;
            Request.ContentType = ContentType;
            Request.Referer = Referer;
            Request.UserAgent = UserAgent;

            byte[] sendData = Encoding.UTF8.GetBytes(Data);
            Request.ContentLength = sendData.Length;
            Stream sendStream = Request.GetRequestStream();
            sendStream.Write(sendData, 0, sendData.Length);
            sendStream.Close();

            foreach (var Pair in Headers)
            {
                Request.Headers.Add(Pair.Key, Pair.Value);
            }

            try
            {
                HttpWebResponse response = (HttpWebResponse)Request.GetResponse();
                var stream = response.GetResponseStream();
                if (stream != null) Responce = new StreamReader(stream).ReadToEnd();
            }
            catch (Exception e)
            {
                project.SendErrorToLog(e.Message,true);
            }
        }

    }

Спасибо за работающую заготовку)
Но отлаживать такое мне кажется мне будет тяжеловато пока что)
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 030
Благодарностей
544
Баллы
113
Sherminator

Не, писал человек который не особо разбирается в коде, эт я))
Да, мне говорили что лучше использовать редакторы которые подсвечивают синтаксис, теперь понимаю почему)


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

Синтаксис как я понимаю должен быть
C#:
TestClass exemlyar = new TestClass();
но не совсем понимаю куда эту конструкцию вставлять, внутрь нового класса?
По return честно говоря не понял, так нельзя делать?)
Дочерний класс это когда наследование используется, а у тебя классы вложенные, да, надо всеравно создавать объект.


Типа такого:
            public string send_post(string url, string data)
            {
                TestClass testClass = new TestClass();
                testClass.UserAgent = project.Profile.UserAgent;
                testClass.Proxy = instance.GetProxy();
                string answerRequest = ZennoPoster.HTTP.Request(
                testClass.HttpMethod.POST,
                url,
                data,
                "application/json",
                testClass.Proxy,
                "UTF-8",
                ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
                60 * 1000,
                testClass.cookie,
                testClass.UserAgent,
                true,
                5,
                AdditionalHeaders: new[]
                {
                    $"authorization: {authorization}"+"," +
                    $"timestamp: {timestamp}"+"," +
                    $"bearer: {bearer}"
                }
            );
                return answerRequest;
            }
А про использование return можешь тут почитать https://metanit.com/sharp/tutorial/2.34.php
 
  • Спасибо
Реакции: SlipDez

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
559
Благодарностей
315
Баллы
63
Для себя делал такой вариант

C#:
public class Request
{
    private readonly IZennoPosterProjectModel _project;

    public Request(IZennoPosterProjectModel project)
    {
        _project = project;
    }

    public string Get(string url, string[] headers = null)
    {
        return HttpRequest(
            httpMethod: HttpMethod.GET,
            url: url,
            content: "",
            headers: headers);
    }

    public string Post(string url, string content, string[] headers = null)
    {
        return HttpRequest(
            httpMethod: HttpMethod.POST,
            url: url,
            content: content,
            headers: headers);
    }

    private string HttpRequest(HttpMethod httpMethod, string url, string content, string[] headers)
    {
        return ZennoPoster.HTTP.Request(
            method: httpMethod,
            url: url,
            content: content,
            contentPostingType: "application/x-www-form-urlencoded",
            proxy: _project.GetProxy(),
            Encoding: "UTF-8",
            respType: ResponceType.BodyOnly,
            Timeout: 30000,
            Cookies: "",
            UserAgent: _project.Profile.UserAgent,
            UseRedirect: true,
            MaxRedirectCount: 3,
            AdditionalHeaders: headers,
            DownloadPath: null,
            UseOriginalUrl: false,
            throwExceptionOnError: false,
            cookieContainer: _project.Profile.CookieContainer,
            removeDefaultHeaders: false);
    }
}
Чтобы освоение С# проходило быстрей и легче, подключаем PM к Visual Studio
Как подключить VS к PM
 
Последнее редактирование:
  • Спасибо
Реакции: SlipDez

SlipDez

Client
Регистрация
18.07.2018
Сообщения
374
Благодарностей
70
Баллы
28
Дочерний класс это когда наследование используется, а у тебя классы вложенные, да, надо всеравно создавать объект.


Типа такого:
            public string send_post(string url, string data)
            {
                TestClass testClass = new TestClass();
                testClass.UserAgent = project.Profile.UserAgent;
                testClass.Proxy = instance.GetProxy();
                string answerRequest = ZennoPoster.HTTP.Request(
                testClass.HttpMethod.POST,
                url,
                data,
                "application/json",
                testClass.Proxy,
                "UTF-8",
                ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
                60 * 1000,
                testClass.cookie,
                testClass.UserAgent,
                true,
                5,
                AdditionalHeaders: new[]
                {
                    $"authorization: {authorization}"+"," +
                    $"timestamp: {timestamp}"+"," +
                    $"bearer: {bearer}"
                }
            );
                return answerRequest;
            }
А про использование return можешь тут почитать https://metanit.com/sharp/tutorial/2.34.php
Теперь стало намного понятней, спасибо)
 

SlipDez

Client
Регистрация
18.07.2018
Сообщения
374
Благодарностей
70
Баллы
28
Для себя делал такой вариант

C#:
public class Request
{
    private readonly IZennoPosterProjectModel _project;

    public Request(IZennoPosterProjectModel project)
    {
        _project = project;
    }

    public string Get(string url, string[] headers = null)
    {
        return HttpRequest(
            httpMethod: HttpMethod.GET,
            url: url,
            content: "",
            headers: headers);
    }

    public string Post(string url, string content, string[] headers = null)
    {
        return HttpRequest(
            httpMethod: HttpMethod.POST,
            url: url,
            content: content,
            headers: headers);
    }

    private string HttpRequest(HttpMethod httpMethod, string url, string content, string[] headers)
    {
        return ZennoPoster.HTTP.Request(
            method: httpMethod,
            url: url,
            content: content,
            contentPostingType: "application/x-www-form-urlencoded",
            proxy: _project.GetProxy(),
            Encoding: "UTF-8",
            respType: ResponceType.BodyOnly,
            Timeout: 30000,
            Cookies: "",
            UserAgent: _project.Profile.UserAgent,
            UseRedirect: true,
            MaxRedirectCount: 3,
            AdditionalHeaders: headers,
            DownloadPath: null,
            UseOriginalUrl: false,
            throwExceptionOnError: false,
            cookieContainer: _project.Profile.CookieContainer,
            removeDefaultHeaders: false);
    }
}
Чтобы освоение С# проходило быстрей и легче, подключаем PM к Visual Studio
Как подключить VS к PM
Благодарю за ответ, взял заготовку, статья очень интересная, изучаю)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)