Search code examples
c#xamarinodata

System.Net.Sockets.SocketException in Simple.oData.Client


I have the following code to get oData with using Simple.oData.Client.It works. when I get wifi via my cell phone; however, when I connect via the company ethernet which is proxy protected, it gives me the following error. How could I handle it?

async partial  void Click_TouchUpInside (UIButton sender)
        {
            var client= new ODataClient("http://services.odata.org/Northwind/Northwind.svc/");

            Console.WriteLine("before await");

            try {
            var packages = await client
                .For("Customers").
                FindEntriesAsync();
                foreach (var package in packages)
                 {
                  //Console.WriteLine(package["CompanyName"]);
                  Console.WriteLine(package);
                 }
                }
                catch(AggregateException e) {
                   Console.WriteLine(e);
                   Console.WriteLine(e.InnerException);
                }
                Console.WriteLine("after await");
       }

System.AggregateException: One or more errors occurred ---> System.AggregateException: One or more errors occurred ---> Simple.OData.Client.WebRequestException: Unexpected WebException encountered ---> System.Net.WebException: Error: ConnectFailure (Connection refused) ---> System.Net.Sockets.SocketException: Connection refused at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x000f1] in ///Library/Frameworks/Xamarin.iOS.framework/Versions/8.8.2.4/src/mono/mcs/class/System/System.Net.Sockets/Socket_2_1.cs:1257 at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) [0x001c2] in ///Library/Frameworks/Xamarin.iOS.framework/Versions/8.8.2.4/src/mono/mcs/class/System/System.Net/WebConnection.cs:213 --- End of inner exception stack trace ---


Solution

  • Here is the solution:

    async partial  void Click_TouchUpInside (UIButton sender)
            {
    
                ODataClientSettings settings = new ODataClientSettings();
    
                NetworkCredential proxyNC = new NetworkCredential("Username", "password");
    
                settings.OnApplyClientHandler= (System.Net.Http.HttpClientHandler clientHandler) => {
    
                    clientHandler.Proxy = new WebProxy("yourproxy.com",false,null, proxyNC);
                    clientHandler.UseProxy = true;
                };
                settings.UrlBase = "http://services.odata.org/Northwind/Northwind.svc/";
                var client= new ODataClient(settings);
    
                Console.WriteLine("before await");
    
                try {
                var packages = await client
                    .For("Customers").
                    FindEntriesAsync();
                    foreach (var package in packages)
                     {
                      //Console.WriteLine(package["CompanyName"]);
                      Console.WriteLine(package["CompanyName"]);
                     }
                    }
                    catch(AggregateException e) {
                       Console.WriteLine(e);
                       Console.WriteLine(e.InnerException);
                    }
                    Console.WriteLine("after await");
           }