Search Unity

  1. Unity 6 Preview is now available. To find out what's new, have a look at our Unity 6 Preview blog post.
    Dismiss Notice
  2. Unity is excited to announce that we will be collaborating with TheXPlace for a summer game jam from June 13 - June 19. Learn more.
    Dismiss Notice
  3. Dismiss Notice

HttpClient

Discussion in 'Experimental Scripting Previews' started by rakkarage, Mar 13, 2017.

  1. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
    Can anyone help me get HttpClient working in this new version?

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Net.Http;
    3. public class Test : MonoBehaviour
    4. {
    5.     HttpClient Client = new HttpClient();
    6.     void Start()
    7.     {
    8.         Client.GetStringAsync("http://www.microsoft.com").ContinueWith(t => Debug.Log(t));
    9.     }
    10. }
    11.  
    - I have downloaded the latest System.Net.Http (lib/net46) from https://www.nuget.org/packages/System.Net.Http/ but get an error about logging. (CIA?)
    - I have tried older versions (4.0, 4.1, 4.11, 4.3) and get other errors about IDispose and Object.
    - I have got it working with UnityWebRequest and IEnumerator.
    - I have got other packages working. (Json.NET)

    Does anyone know which version works with this Unity? I see System.Threading.Tasks was recently(?) made available without using nuget? This should/could be the case with System.Net.Http too? Or I have to copy it from the Unity bleeding edge folder? Or the ref folder? Or the lib/net45/6? Or using Microsoft.Net.Http? Idk!? Ya I am stupid...

    Thanks.
     
  2. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    I think this should work, and you should not need to copy assemblies from any folder. The actual assemblies for the .NET 4.6 class libraries are in the MonoBleedingEdge/monodistribution/lib/net45 directory, but Unity should be able to reference them from that directory.

    Which platform you are building for? This almost looks like a managed code stripping problem.
     
  3. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
    I am building standalone on windows 10...
    New project & new file...
    System.Threading.Tasks works but System.Net.Http does not?

    2017-03-13 (2).png

    I have not installed any other platforms or options and see no stripping options in player settings for standalone.

    If this works for others but not for me I guess I need to reinstall windows and vs...

    Thanks.
     
  4. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    For an standalone build there should be no managed code stripping, so that it not the issue. Can you check the Editor.log file for the C# compiler command line options and response file? See if the System.Net.Http.dll assembly is passed to the compiler as a reference. It may not be passed by default.
     
  5. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
    I don't see it in there...

     
  6. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    Try putting a file named mcs.rsp in the Assets directory with one line in it:

    -r:System.Net.Http.dll

    I think that will correctly reference the assembly from the class library directory, and it should work then.
     
  7. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
    Thanks. :) Ya that fixes it in the editor, but I guess that does not affect the csproj and so the error still exists in vs and vscode. :(

    idk why system.threading.tasks (i think that is new for this version too) works with no mention in edit log or rsp or csproj...
     
  8. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    For Visual Studio, make sure you are using the latest version of Visual Studio Tools for Unity. It should pick up the entries in the mcs.rsp file and add them to the generated .csproj file. Note that the mcs.rsp file is new for the experimental scripting preview builds though. Other versions of Unity used the gmcs.rsp file, so an older version of VSTU might not know to look in the mcs.rsp file.

    The code in System.Threading.Tasks.Task works out of the box because it is in the mscorlib.dll, which is always referenced.
     
    rakkarage likes this.
  9. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
  10. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    Sorry, I was incorrect - the mcs.rsp file is not yet supported by VSTU. They have added support internally though, so it should be available soon.
     
  11. sailro

    sailro

    Microsoft

    Joined:
    Jul 30, 2014
    Posts:
    167
    rakkarage likes this.
  12. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
    Thanks but I do not have a SyntaxTree.VisualStudio.Unity.Bridge namespace...
    I guess I need to add a reference to that using this but infinite recursion error
    Ya this works too. In VSCode too. Sometimes. Usually.

    Code (CSharp):
    1. using System.IO;
    2. using System.Text.RegularExpressions;
    3. using UnityEditor;
    4. using UnityEngine;
    5. [InitializeOnLoad]
    6. class Fix : AssetPostprocessor
    7. {
    8.     private static void OnGeneratedCSProjectFiles()
    9.     {
    10.         Debug.Log("OnGeneratedCSProjectFiles");
    11.         var dir = Directory.GetCurrentDirectory();
    12.         var files = Directory.GetFiles(dir, "*.csproj");
    13.         foreach (var file in files)
    14.             FixProject(file);
    15.     }
    16.     static bool FixProject(string file)
    17.     {
    18.         var text = File.ReadAllText(file);
    19.         var find = "<Reference Include=\"System\" />";
    20.         var replace = "<Reference Include=\"System\" /> <Reference Include=\"System.Net.Http\" />";
    21.         if (text.IndexOf(find) != -1)
    22.         {
    23.             text = Regex.Replace(text, find, replace);
    24.             File.WriteAllText(file, text);
    25.             return true;
    26.         }
    27.         else
    28.             return false;
    29.     }
    30. }
    But these are just temporary fixes?
    System.Net.Http will be included in project by unity later?
    How do you decide what to include? Why include HoloLens and VR? How to inform vscode of those choices?
    Why can we not just use a version from nuget like some other .net libraries?
    I tied to get around all this by doing work in a dll but then that version of httpClient would conflict too?
    Thanks.
     
  13. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    Generally, we reference the assemblies that are most often used. It is a bit arbitrary, but we're always trying to balance utility with compile times. I don't think the the HTTP assembly will ever be referenced by default by Unity, as it is not used in too many projects.

    If that said, you can explicitly include it as we have mentioned in this thread.

    We don't currently have nuget support in Unity. Although we've had some recent discussions about it, there is nothing firm about how or when it will be supported yet.
     
  14. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
    Thank you for your response.

    I understand that you do not currently support nuget. I was asking about unzipping the dll from nuget into my asset folder.
    Does anyone know if there is a version of System.Net.Http on nuget that is compatible with this version of Unity?
    I have unzipped and copied and tested many different versions of the dll. I cannot get it to work.

    1. csp.rsp
    • Will require VS instead of VSCode? Maybe not?
    • Does not work yet.
    2. ProjectFilesGenerator.ProjectFileGeneration
    • Requires VS instead of VSCode, else not called.
    • Requires copy SyntaxTree.dll into project folder?
    • Requires build and maintain editor dll.
    • Requires text search and replace in project file code.
    3. OnGeneratedCSProjectFiles
    • Requires build and maintain editor dll.
    • Requires text search and replace in project file code.
    • Is not called when project has errors. So get more errors. Flickers between 'working' and not. Unreliable.
    4. Can I just copy a dll from nuget instead? (OP^)
    • which one? (I even tried using ildasm to find out but failed)
    Thanks.
     
  15. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    You should not need to copy the System.Net.Http.dll file from nuget. That file exists in the Mono class libraries that ship with this build of Unity.

    I think the issue might be with the csp.rsp file. I don't believe that is the proper file name. The name of the file should be mcs.rsp. If you try to use mcs.rsp, and the project will not compile in Unity, then I'm interested to know what the compiler error is. This should work.
     
    rakkarage likes this.
  16. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
    Thank you. Yes that does fix it in Unity. :)
    The VSTU update will, I assume, fix it in VS.
    Does anyone have any ideas about how to get this working in vscode [and what about other editors? rider? etc?] too? mcs.rsp can be supported by https://github.com/OmniSharp/omnisharp-vscode or https://github.com/Unity-Technologies/vscode-unity-debug? [if only there was some application independent, project specific, thing we could use to add references to a project, a file perhaps... we could call it a project file:] I guess I would have to use OnGeneratedCSProjectFiles? that's why I wanna copy it I guess

    Thanks.
     
    Last edited: Mar 21, 2017
  17. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    I'm not sure about other editors. I think that OnGeneratedCSProjectFiles is your best bet.

    We have talked about this before. There are times when having a project system within Unity would help us as well. For the time being, we probably won't implement it, but it might make sense in the future.
     
  18. bdovaz

    bdovaz

    Joined:
    Dec 10, 2011
    Posts:
    1,063
    It's going to be a problem when we get the .NET 4.6 upgrade and we see that we can't download nuget packages like in any other .NET project and we have to manually copy and update assemblies... Can't you fix that problem on time? You will get then thousands of posts asking how to integrate third party libraries on Unity, etc.

    Also applies to assemblies not directly included by Unity that need to be added with "mcs.rsp" manually. We need easier systems for this tasks, please.

    I'm a senior developer and this "minor" things slow us from focusing on our actual daily tasks. Think of new Unity developers what are going to face.
     
    rakkarage likes this.
  19. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    We have been discussing this a good bit internally. I don't think that we will have nuget support when the Mono runtime upgrade ships, but it may come later. In general, we're looking at better package management for managed and native code, as well as other assets. My team is not specifically a part of this effort, so I'm a bit short on details.

    We do recognize the problem though.
     
  20. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
    ya and what if I wanna move my http code into a dll? it is already clearly much easier to copy into assets folder then build and maintain a dll and add rsp to reference another dll... how can I perform this "secret lock-in handshake" from a managed extension? i will be forced to copy a version of System.Net.Http into the dll... I wonder which one
     
  21. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    @rakkarage

    Sorry, I'm unsure what situation you are asking about. I don't think that the Mono runtime upgrade will have any impact on how Unity handles managed assembly DLLs vs. source code.
     
  22. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
    Thanks. Sorry I was getting errors from targeting wrong framework in new library that I incorrectly assumed were related.

    Assets/Test.cs(9,14): error CS0012: The type `System.Object' is defined in an assembly that is not referenced. Consider adding a reference to assembly `System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

    But after adjusting the library framework to net4.6 it works fine and without the need for rsp and editor dll.

    And I guess a dll like this can kinda act as "proxy" between nuget and unity. It can use nuget and copy the right dll to the release folder.

    Thanks.
     
  23. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    Ok, that makes more sense! Thanks for letting me know. I'm glad that you have this working now.
     
  24. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
    Sorry. Spoke too soon... same error as original post @ runtime...
    The dll has a version of System.Net.Http (copied to assets) and unity has a different version of System.Net.Http? Maybe they conflict in some way? idk
    Or maybe I am just doing something wrong.
    Thanks.

    MissingMethodException: Method 'System.Net.Logging.get_Http' not found.
    System.Net.Http.HttpMessageInvoker.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) (at <817f01c34011477d890a98232b85553d>:0)
    System.Net.Http.HttpClient.SendAsync (System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken) (at <817f01c34011477d890a98232b85553d>:0)
    System.Net.Http.HttpClient.GetAsync (System.Uri requestUri, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationToken cancellationToken) (at <817f01c34011477d890a98232b85553d>:0)
    System.Net.Http.HttpClient.GetAsync (System.Uri requestUri, System.Net.Http.HttpCompletionOption completionOption) (at <817f01c34011477d890a98232b85553d>:0)
    System.Net.Http.HttpClient.GetStringAsync (System.Uri requestUri) (at <817f01c34011477d890a98232b85553d>:0)
    System.Net.Http.HttpClient.GetStringAsync (System.String requestUri) (at <817f01c34011477d890a98232b85553d>:0)
    LibraryStandard.Class1+<Test>d__1.MoveNext () (at C:/Users/rakka/Desktop/LibraryCore/LibraryCore/LibraryCore/Class1.cs:13)
    --- End of stack trace from previous location where exception was thrown ---
    System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () (at /Users/builduser/buildslave/mono/build/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143)
    System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) (at /Users/builduser/buildslave/mono/build/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187)
    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) (at /Users/builduser/buildslave/mono/build/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156)
    System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) (at /Users/builduser/buildslave/mono/build/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128)
    System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () (at /Users/builduser/buildslave/mono/build/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:357)
    Test+<Start>c__async0.MoveNext () (at Assets/Test.cs:10)
    --- End of stack trace from previous location where exception was thrown ---
    System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () (at /Users/builduser/buildslave/mono/build/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143)
    System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>m__0 (System.Object state) (at /Users/builduser/buildslave/mono/build/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:1018)
    UnityEngine.UnitySynchronizationContext+WorkRequest.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnitySynchronizationContext.cs:72)
    UnityEngine.UnitySynchronizationContext.Exec () (at C:/buildslave/unity/build/Runtime/Export/UnitySynchronizationContext.cs:37)
    UnityEngine.UnitySynchronizationContext.ExecuteTasks () (at C:/buildslave/unity/build/Runtime/Export/UnitySynchronizationContext.cs:57)
     
  25. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    Maybe I've missed something here, but I would like to back up to a first question: Why do you need to copy the System.Net.Http.dll file into the Assets directory in the project?
     
  26. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
    because my managed extension dll depends on it, uses it, does not work without it, and visual studio copies it to output directory

    if I make a new managed extension dll that depends on newtonsoft.json it copies it to the output folder and I copy it along with my dll to the asset folder and works fine...

    if I make a new managed extension dll that depends on system.net.http it copies it to the output folder and I copy it along with my dll to the asset foder and error!

    I guess I thought I could get around the requirement for rsp and project file editing code in an editor dll by shifting my dependency into a dll but maybe not sorry
     
  27. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    Yes, I think in the case of an assembly that is already in the .NET profile class library directory, you should not copy the assembly into the project. It is best to just reference the assembly with the mcs.rsp file. That way there is only one location of that assembly, so the build won't get confused about which one to use.
     
  28. rakkarage

    rakkarage

    Joined:
    Feb 3, 2014
    Posts:
    683
    Thanks. Unity just freezes if I replace the dll with a rsp now, I guess because my managed extension dll was linked to a different version of System.Net.Http? idk

    am I supposed to copy the System.Net.Http from bleeding edge instead of using one from nuget when developing a managed extension because that does not work either... idk
     
  29. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    This sounds like a bug. The Unity editor should not freeze. Is there any indication in the Editor.log file of an error message?

    As long as you use the mcs.rsp file to reference the System.Net.Http.dll, there is no need to copy it into the project directory at all.
     
  30. akeybl

    akeybl

    Joined:
    Jun 16, 2016
    Posts:
    7
    Posting on this thread because I think it's related. I've used the instructions above to create an mcs.rsp file with the following inside:

    -r:System.Net.Http.dll,System.Reactive.Core.dll,System.Reactive.Interfaces.dll,System.Reactive.Linq.dll,System.Reactive.PlatformServices.dll​

    It's working perfectly when building in Unity, but the Reactive DLLs give me the following errors in VS:

    1>CSC : error CS0006: Metadata file 'System.Reactive.Core.dll' could not be found
    1>CSC : error CS0006: Metadata file 'System.Reactive.Interfaces.dll' could not be found
    1>CSC : error CS0006: Metadata file 'System.Reactive.Linq.dll' could not be found
    1>CSC : error CS0006: Metadata file 'System.Reactive.PlatformServices.dll' could not be found​

    When attempting to add a reference, I can't seem to find System.Reactive.*. Any help would be greatly appreciated, since this prevents building in VS, which prevents attaching/debugging the editor. Thanks!

    FYI I'm using Unity 2017.1.0f3 and VSTU 3.1.0.0
     
  31. sailro

    sailro

    Microsoft

    Joined:
    Jul 30, 2014
    Posts:
    167
  32. akeybl

    akeybl

    Joined:
    Jun 16, 2016
    Posts:
    7
    Thanks @sailro! I'm installing Visual Studio 2017 right now and will get back to you shortly.

    On a separate but related note. I just tried to run this HTTPClient code on Android. I got an EntryPointNotFoundException for getdomainname. Is HAVE_GETDOMAINNAME disabled in Android builds of System.Net.Http? Loses a lot of its use @JoshPeterson :(

    Any ideas of how to work around this issue would be really appreciated. Rebuilding the System.Net.Http DLL perhaps?
     
  33. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    @akeybl

    In Unity 2017.1 we are using the same class library code on all platforms, so I'm not sure why HttpClient would not work there. Are you using the IL2CPP or Mono scripting backend on Android?
     
  34. akeybl

    akeybl

    Joined:
    Jun 16, 2016
    Posts:
    7
    @sailro unfortunately, VS 2017 + VSTU 2017-3.4 doesn't appear to have resolved the issue. When I go to Project > Add Reference I see System.Net.* but I don't see System.Reactive.*. I also performed a search in the reference manager to be 100% sure. Is there anything I need to drop into my project for Visual Studio to pick up the DLLs in the same way mcs.rsp does?

    @JoshPeterson I'm using the Mono scripting backend (Stripping Level: Disabled) but tried IL2CPP to compare. Unfortunately, my build doesn't succeed right now. I can pursue that angle, if you think getdomainname is more likely to work with IL2CPP.
     
    Last edited: Jul 28, 2017
  35. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    It is probably more likely to work on Mono, as that is more similar to the way things work in the editor. Can you submit a bug report for this issue?
     
  36. akeybl

    akeybl

    Joined:
    Jun 16, 2016
    Posts:
    7
  37. akeybl

    akeybl

    Joined:
    Jun 16, 2016
    Posts:
    7
    @sailro any ideas on how I can workaround the issue and enable debugging when using Reactive? log debugging hurts so much haha :eek:
     
  38. akeybl

    akeybl

    Joined:
    Jun 16, 2016
    Posts:
    7
    For anybody running into this issue, the solution is to Project > Add Reference > Browse and add missing DLLs directly from C:\Program Files\Unity\Editor\Data\MonoBleedingEdge\lib\mono\gac\. Then do a clean build of the solution. Not sure if when I ran `Install-Package Rx-Main -Version 2.2.0.0` in the nuget package manager that helped too? @sailro

    No word yet on why getdomainname/libc isn't available when trying to use HTTPClient on Android using the experimental Mono 4.6.
     
  39. mokus

    mokus

    Joined:
    Dec 16, 2016
    Posts:
    2
    Hello, did you solve the issue with EntryPointNotFoundException on Android? Any ideas how to work around it?
     
  40. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    @mokus

    No, we have not corrected this issue yet.
     
  41. akeybl

    akeybl

    Joined:
    Jun 16, 2016
    Posts:
    7
    Unfortunately we had to move to Best HTTP asset to work around the System.Net EntryPointNotFoundException issues.
     
  42. googlerOTS

    googlerOTS

    Joined:
    May 10, 2017
    Posts:
    5
    Any news about EntryPointNotFoundException for getdomainname ?
     
  43. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
    @googlerOTS

    We have not corrected this issue yet.
     
  44. ArturSu1

    ArturSu1

    Joined:
    Oct 2, 2017
    Posts:
    10
    Any news about libc? EntryPointNotFoundException still occurs in Unity 2017.3.0b7. When approximately this bug will be fixed?
     
  45. JoshPeterson

    JoshPeterson

    Unity Technologies

    Joined:
    Jul 21, 2014
    Posts:
    6,938
  46. ArturSu1

    ArturSu1

    Joined:
    Oct 2, 2017
    Posts:
    10
    Thank you. Please pay attention to this issue because it blocks communication with server via .net built-in instruments.
     
    Tutanhomon and Qbit86 like this.
  47. bdovaz

    bdovaz

    Joined:
    Dec 10, 2011
    Posts:
    1,063
    +1
     
    Qbit86 likes this.
  48. Tutanhomon

    Tutanhomon

    Joined:
    Sep 15, 2009
    Posts:
    101
    +1
    How can you say that you implemented .net4.6 if it's not working?
     
    mirshadz and Qbit86 like this.
  49. bdovaz

    bdovaz

    Joined:
    Dec 10, 2011
    Posts:
    1,063
    If you want developers to use or test.net 4.6 you need to focus on fixing this bugs.

    The first post on this thread it's from March...
     
    mirshadz and Tutanhomon like this.
  50. bryane_at_moback

    bryane_at_moback

    Joined:
    Oct 24, 2017
    Posts:
    3
    This is currently blocking me from using the Twilio client in Unity.
     
    rakkarage likes this.