Giter Club home page Giter Club logo

soaphttpclientbridge's Introduction

SoapHttpClient fix for SoapHttpClientProtocol on MONO

Greetings Xamarin developer, this little project is meant to fix the TLS issue on mono while using webservices whose proxies inherit from SoapHttpClientProtocol.

A brief history: it looks like mono does not implement TLS 1.2 or anything better that TLS 1.0 (with some limitations). to overcome this problem you could switch your whole architecture to use the new HttpClient libs in conjunction with ModernHttpClient component, in this way all the requests would be routed trough the native http client library implementations (ios and android). Since this was not an option for us (rebuilding our whole SOAP/WCF api was not easily feasible) we had to find a different solution, subclassing SoapHttpClientProtocol to use the new HttpClient and ModernHttpClient, hacking into one of the basic blocks of the soap protocol.

Installation:

  • link the projects into your app
  • add ModernHttpClient (version 2.1.2+) to your apps and to the SoapHttpClient project
  • let your webservice reference inherit from SoapHttpClientBridge instead of SoapHttpClientProtocol
  • enjoy

Known issues:

  • since we didn't need to we just implemented the Invoke method, leaving all the async or delegate implementations as they were
  • in debug mode, on ios real devices (no simulator), heavy usage can lead to deadlocks
  • the library relies heavily on reflection, thus performances could suffer a bit

Stuff to do:

  • implement InvokeAsync to use the bridge on async await style operations
  • implement BeginInvoke EndInvoke to use the bridge on old async style operations

soaphttpclientbridge's People

Contributors

vespassassina avatar

Watchers

Hello Chen avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.