POST через C# Own Code ошибка "Ссылка на объект не указывает на экземпляр объекта"

nik-n

Client
Регистрация
05.11.2016
Сообщения
240
Благодарностей
20
Баллы
18
выдает ошибку:
Выполнение действия CSharp OwnCode Ссылка на объект не указывает на экземпляр объекта.
НО если просто в кубике C# выполняю, то все ок, в переменную попадет то что и должно - ключ.
читал по форуму, что вроде бы если null возвращается то такая ошибка бывает.
но у меня null не возвращается, сам код функции работает исправно (если он не в Own Code)

C# Own Code
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;

namespace ZennoLab.OwnCode
{

    public class clientBaseApi
    {
        public static IZennoPosterProjectModel project;
        public static object Auth(int lifeTime){
          
            string cb_host = project.Variables["cbHost"].Value;
            string cb_login = project.Variables["cbLogin"].Value;
            string cb_key = project.Variables["cbKey"].Value;
            string regexStrSalt = @"(?<=""salt"":"").*(?="","")";
            string regexStrAccesId = @"(?<=""access_id"":"").*(?="","")";
          
            var jsonAuth = ZennoPoster.HttpPost(
                "http://"+cb_host+"/api/auth/request/",
                "{\"v\": \"1.0\", \"login\": \""+cb_login+"\", \"life_time\": "+lifeTime+"}",
                "application/x-www-form-urlencoded",
                "",
                "utf-8",
                ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly
            );
          
            string salt = System.Text.RegularExpressions.Regex.Match(jsonAuth, regexStrSalt).Value;
            string md5sum = (salt + cb_key).GetMD5Hash();
          
            var jsonAuth2 = ZennoPoster.HttpPost(
                "http://"+cb_host+"/api/auth/auth/",
                "{\"v\": \"1.0\", \"login\": \""+cb_login+"\", \"hash\": \""+md5sum+"\"}",
                "application/x-www-form-urlencoded",
                "",
                "utf-8",
                ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly
            );

            return System.Text.RegularExpressions.Regex.Match(jsonAuth2, regexStrAccesId).Value;
          
        }


    }
}
Код в самом кубике C#
Код:
clientBaseApi.Auth(14400);
 
Последнее редактирование:

Bablozavr

Client
Регистрация
26.01.2018
Сообщения
310
Благодарностей
163
Баллы
43
Код в самом кубике C#
Прям такой код и все? Вроде нужно создать экземпляр класса clientBaseApi и потом с ним работать, а не напрямую вот так.
Что-то такое, примерно, я не очень с ООП дружу, могу в чем-то ошибаться.
Код:
x = new clientBaseApi();
x.Auth(14400);
 

Metrix

Client
Регистрация
03.01.2014
Сообщения
343
Благодарностей
271
Баллы
63
Вначале метода в общем коде
Код:
this.lifeTime = lifeTime;
В сниппете
Код:
var auth = new Auth(14400);
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 857
Баллы
113
Объект project нужно тоже прокинуть внутрь класса. В вышеприведенном коде он просто объявлен и ему ничего не присвоено.
Из-за этого и лезет ошибка про экземпляр класса.
 
  • Спасибо
Реакции: nik-n

nik-n

Client
Регистрация
05.11.2016
Сообщения
240
Благодарностей
20
Баллы
18
Объект project нужно тоже прокинуть внутрь класса. В вышеприведенном коде он просто объявлен и ему ничего не присвоено.
Из-за этого и лезет ошибка про экземпляр класса.
можно пример? :bh:
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
26 строку замени
public static object Auth(int lifeTime, IZennoPosterProjectModel project)
 
  • Спасибо
Реакции: nik-n

nik-n

Client
Регистрация
05.11.2016
Сообщения
240
Благодарностей
20
Баллы
18
26 строку замени
public static object Auth(int lifeTime, IZennoPosterProjectModel project)
а в самом кубике теперь тоже нужно аргумент какой то добавить?

и то что выше писали нужно делать? ))
потому что после это начинает ругаться "Недопустимый токен this в объявлении класса, структуры или интерфейса"

короче)) щас у меня так:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;

namespace ZennoLab.OwnCode
{
    public class clientBaseApi {
       
        public static IZennoPosterProjectModel project;
       
        public static object Auth(int lifeTime, IZennoPosterProjectModel project) {
           
            string cb_host = project.Variables["cbHost"].Value;
            string cb_login = project.Variables["cbLogin"].Value;
            string cb_key = project.Variables["cbKey"].Value;
            string regexStrSalt = @"(?<=""salt"":"").*(?="","")";
            string regexStrAccesId = @"(?<=""access_id"":"").*(?="","")";
           
            var jsonAuth = ZennoPoster.HttpPost(
                "http://"+cb_host+"/api/auth/request/", 
                "{\"v\": \"1.0\", \"login\": \""+cb_login+"\", \"life_time\": "+lifeTime+"}", 
                "application/x-www-form-urlencoded", 
                "", 
                "utf-8", 
                ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly
            );
           
            string salt = System.Text.RegularExpressions.Regex.Match(jsonAuth, regexStrSalt).Value;
            string md5sum = (salt + cb_key).GetMD5Hash();
           
            var jsonAuth2 = ZennoPoster.HttpPost(
                "http://"+cb_host+"/api/auth/auth/", 
                "{\"v\": \"1.0\", \"login\": \""+cb_login+"\", \"hash\": \""+md5sum+"\"}", 
                "application/x-www-form-urlencoded", 
                "", 
                "utf-8", 
                ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly
            );

            return System.Text.RegularExpressions.Regex.Match(jsonAuth2, regexStrAccesId).Value;
        }
    }
}
Код:
var auth = new clientBaseApi.Auth(14400);
return auth;
и в итоге вот:
Компиляция кода Ошибка в действии "CS0118" ""ZennoLab.OwnCode.clientBaseApi.Auth(int, ZennoLab.InterfacesLibrary.ProjectModel.IZennoPosterProjectModel)" является "метод", но используется как "тип"". [Строка: 29; Cтолбец: 30]
 

Alex733

Client
Регистрация
27.11.2017
Сообщения
317
Благодарностей
230
Баллы
43
Так попробуй вызвать:
Код:
return clientBaseApi.Auth(14400, project);
 
  • Спасибо
Реакции: nik-n

nik-n

Client
Регистрация
05.11.2016
Сообщения
240
Благодарностей
20
Баллы
18

nik-n

Client
Регистрация
05.11.2016
Сообщения
240
Благодарностей
20
Баллы
18

nik-n

Client
Регистрация
05.11.2016
Сообщения
240
Благодарностей
20
Баллы
18
мое почтение всем кто помог :bt::bt::bt:
попутно еще в целом во многом разобрался
 

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