c# HttpWebResponse просто работает с Италией IP - PullRequest
0 голосов
/ 13 апреля 2020

Я хочу вызвать API с HttpWebRequest, но только с Италией IP возвращает «ОК». С другими странами возврат ИС "не реализован". Что я могу сделать для работы с IP всех стран?

        private void MakeRequests()
    {
        HttpWebResponse response;

        if (Request_onlineplus_mofid_com(out response))
        {
            using (Stream responseStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                WriteToLog(reader.ReadToEnd());
                label1.Text = response.StatusCode.ToString();
            }
            response.Close();
        }
    }



    private bool Request_onlineplus_mofid_com(out HttpWebResponse response)
    {
        response = null;

        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://******.com/Customer/SendOrder");

            request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0";
            request.Accept = "*/*";
            request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.5");
            request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br");
            request.Headers.Add("X-Requested-With", @"XMLHttpRequest");
            request.ContentType = "application/json";
            request.Headers.Add("Origin", @"https://********.com");
            request.KeepAlive = true;
            request.Referer = "https://*******.com/Home/Default/page-1";
            request.Headers.Set(HttpRequestHeader.Cookie, @"GuidedTourVersion=1; SiteVersion=3.7.4; _ga=GA1.2.1641357646.1586548762; _gid=GA1.2.898069884.1586548762; crisp-client%2Fsession%2Fe95056ad-2681-452d-976d-0c2a304165c9=session_747ab3aa-5e67-4895-bf1f-1ebc4228674d; Token=cffb7683-749f-4778-95f1-445f30844f24; silverse=caiqiybzlgduowvc4bfpaip0; .ASPXAUTH=8BB49592D10170B8AC065895D255222E76D2D7D5B7F60DFE945F4E401568D8C0261BA121CA9D99FC95121378A7F0F7F94E11557B8D127A58D822802D70700CFB4872C885A45F969A514731895DE691040C961713A44634ADF984900888BA8F8ADF7AF0FD7BA1A8BAD1F5F5AABD68A3CD611686198DD4AB5BBF0D3200618169D8");
            request.SendChunked = true;
            request.TransferEncoding = "Trailers";

            request.Method = "POST";
            request.ServicePoint.Expect100Continue = false;

            string body = @"{""IsSymbolCautionAgreement"":false,""CautionAgreementSelected"":false,""IsSymbolSepahAgreement"":false,""SepahAgreementSelected"":false,""orderCount"":1,""orderPrice"":52570,""FinancialProviderId"":1,""minimumQuantity"":"""",""maxShow"":0,""orderId"":0,""isin"":""IRO1GARN0001"",""orderSide"":65,""orderValidity"":74,""orderValiditydate"":null,""shortSellIsEnabled"":false,""shortSellIncentivePercent"":0}";
            byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
            request.ContentLength = postBytes.Length;
            Stream stream = request.GetRequestStream();
            stream.Write(postBytes, 0, postBytes.Length);
            stream.Close();

            response = (HttpWebResponse)request.GetResponse();
        }
        catch (WebException e)
        {
            if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response;
            else return false;
        }
        catch (Exception)
        {
            if (response != null) response.Close();
            return false;
        }

        return true;
    }

Указанные выше коды сгенерированы фиддлером. этот API с Restsharp всегда возвращается 401. но в Почтальон Retuen 200.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...