C # RestSharp Возвращает пустую строку - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть этот код как в моем консольном приложении, так и в приложении webapi

static void TestHitOtp()
    {
        try
        {
            string urlPOST = ConfigurationManager.AppSettings["OtpUrl"];
            string userid = ConfigurationManager.AppSettings["UserIdOtp"];
            string password = ConfigurationManager.AppSettings["PasswordOtp"];
            string phoneNumber = ConfigurationManager.AppSettings["PhoneNumberForTest"];
            string message = "message from test sms gateway from console app at " + DateTime.Now.ToString();
            var guid = Guid.NewGuid();
            var client = new RestClient(urlPOST);
            var request = new RestRequest(Method.POST);
            //ServicePointManager.SecurityProtocol |= SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            ParameterType type = ParameterType.GetOrPost;
            request.AddParameter("userid", userid, type);
            request.AddParameter("password", password, type);
            request.AddParameter("dept", "DeptName", type);
            request.AddParameter("original", "CompanyName", type);
            request.AddParameter("sendto", phoneNumber, type);
            request.AddParameter("messageid", guid.ToString(), type);
            request.AddParameter("message", message, type);
            var fullUrl = client.BuildUri(request);
            IRestResponse response = client.Execute(request);
            var content = response.Content;
            Console.WriteLine("Test OTP From Console");
            Console.WriteLine("User Id     : "+ userid);
            Console.WriteLine("Password    :" + password);
            Console.WriteLine("Dept        : DeptName");
            Console.WriteLine("Original    : CompanyName");
            Console.WriteLine("Message Id  : "+ guid.ToString());
            Console.WriteLine("message     : "+ message);
            Console.WriteLine("Result      : "+ content);
            Console.WriteLine("Press any key to close..");
            Console.ReadKey();
        }
        catch (Exception ex)
        {

            Console.WriteLine("Masuk Exception, Error Message = " + ex.Message);
            Console.WriteLine("Masuk Exception, Error InnerException Message = " + ex.InnerException.Message);
            Console.WriteLine("Press any key to close..");
            Console.ReadKey();
        }
    }

Я запутался.у меня есть 2 различных сервера среды и промежуточный сервер (тест сервера).

, но проблема в том, что этот код хорошо работает в консоли для обеих сред.но в моем вебапи это основное приложение.этот код просто запускается на промежуточном сервере.в производственном сервере результат этого попадания просто «пустая строка», что я должен проверить, чтобы убедиться, что эти две среды имеют одинаковую конфигурацию, чтобы эти 2 среды могли поразить мой сервер шлюза sms.это прокси или что-то, если это прокси что настраивать?web.config или что?

и я не знаю, нужно ли мне использовать

ServicePointManager.SecurityProtocol |= SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

, если я хочу нажать https url?

update:

Я думаю, что что-то заблокировало запрос на изменение резкости, поэтому webapi не может перейти по этому адресу https.но я не знаю что проверить.что блокирует этот запрос http

спасибо

1 Ответ

0 голосов
/ 21 мая 2019

Добавьте этот код, как вы упомянули в методе, который вызывает API

ServicePointManager.SecurityProtocol |= SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

Это сработало для меня.Или вы можете обновить до .Net Framework 4.7, который будет обрабатывать это автоматически.

...