none
доступ к веб сервису через прокси RRS feed

  • Вопрос

  • Доброго времени суток...

    Друзья подсобите пожалуйста... у меня есть пример консольного приложения работающего с веб-сервисом...

    однако в моей организации доступ к внешним ресурсам осуществляется через прокси с вводом логина пароля от учётки...

    без прокси - приложение работает... но не могу понять как переписать приложение чтобы оно работало через прокси... подсобите пожалуйста...

    веб-сервис подключен к приложению штатными средствами через "Add Service Reference" подключен в момент отключенной прокси

    код имеющейся программы:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ServiceModel;
    using System.Net;
    
    
    namespace TMR_VINRequestConsoleApp
    {
        class Program
        {
            string username;
            string password;
            string vin;
    
            string errCode;
            string errText;
    
    
            public string uri;
    
            public Boolean skipCertValidation;
    
            public void getCarInfo()
            {
                ;
    
                if (skipCertValidation)
                {
                    ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
                }
    
                BasicHttpBinding basicHttpbinding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
                basicHttpbinding.Name = "setNewMsgSoap";
                basicHttpbinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
                basicHttpbinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
                
                
                EndpointAddress endpointAddress = new EndpointAddress(uri);
    
                InfoByVin.InfoByVINClient client = new InfoByVin.InfoByVINClient(basicHttpbinding, endpointAddress);
                
    
                client.ClientCredentials.UserName.UserName = username;
                client.ClientCredentials.UserName.Password = password;
    
                InfoByVin.Repair[]    repairs;
                InfoByVin.Sales       sales;
                InfoByVin.Credit[]    credits;
                InfoByVin.Question[]  questions;
                InfoByVin.CarInfo[]   carInfos;
    
                sales = client.InfoByVINOperation(vin, out credits, out repairs, out questions, out errCode, out errText);
    
                if (sales != null && sales.@new != null)
                {
                    InfoByVin.CarInfo carInfoNew = sales.@new;
    
                    Console.WriteLine("SALES NEW");
    
                    Console.WriteLine(String.Format("buyScheme - {0}", carInfoNew.buyScheme));
                                }
    
    
    
                Console.WriteLine("SALES USED CARS");
    
                if (sales != null)
                {
                    carInfos = sales.trins;
    
                    foreach (InfoByVin.CarInfo carInfo in carInfos)
                    {
                        Console.WriteLine(String.Format("buyScheme - {0}", carInfo.buyScheme));
                    }
                }
    
                if (repairs != null)
                {
                    Console.WriteLine("REPAIRS");
                    foreach (InfoByVin.Repair repair in repairs)
                    {
                        Console.WriteLine(String.Format("ClaimDate - {0}", repair.claimDate));
                    }
                }
    
                if (credits != null)
                {
                    Console.WriteLine("CREDITS");
                    foreach (InfoByVin.Credit credit in credits)
                    {
                        Console.WriteLine(String.Format("vin - {0}", credit.vin));
                    }
                }
    
                if (questions != null)
                {
                    Console.WriteLine("Question");
                    foreach (InfoByVin.Question question in questions)
                    {
                        Console.WriteLine(String.Format("closeDate - {0}", question.closeDate));
                    }
                }
                Console.WriteLine("Press enter to continue");
                Console.ReadLine();
            }
    
            public void setUserCredentials(string _userName, string _password)
            {
                username = _userName;
                password = _password;
            }
    
            public void setUri(string _uri)
            {
                uri = _uri;
            }
    
            public void setVin(string _vin)
            {
                vin = _vin;
            }
    
            public void setSkipCertValidation(Boolean _skipCertValidation)
            {
                skipCertValidation = _skipCertValidation;
            }
    
            public string getErrCode()
            {
                return errCode;
            }
    
            public string getErrText()
            {
                return errText;
            }
    
            static void Main(string[] args)
            {
                Program pr = new Program();
                ;
    
                pr.setSkipCertValidation(true); //NB! Don't use this on production environment
                pr.setVin("JTEHH20V200279191");
                pr.setUri("https://***.***.***.***:8081/DMS_InfoByVIN");
                pr.setUserCredentials("user", "pass");
                pr.getCarInfo();
            }
        }
    }
    

    содержимое app.config:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="DMS_InfoByVINSoap">
                        <security mode="Transport" />
                    </binding>
                    <binding name="DMS_InfoByVINSoap1" />
                </basicHttpBinding>
            </bindings>
            <client>
                <endpoint address="https://***.***.***.***:8081/DMS_InfoByVIN"
                    binding="basicHttpBinding" bindingConfiguration="DMS_InfoByVINSoap"
                    contract="InfoByVin.InfoByVIN" name="DMS_InfoByVINPort" />
            </client>
        </system.serviceModel>
    </configuration>

    реальный IP извините не имею права выдать...

    Подскажите пожалуйста возможно ли в данном случае модернизировать программу для работы через нашу прокси... 

    Спасибо!

    30 июля 2014 г. 8:41

Ответы

Все ответы