unity-urlclient is a Unity 3D plugin for downloading files via HTTP/HTTPS.
- Unity 3.4.x Pro and above.
- Multi-platform: iOS/Android/MacOSX support.
- Protocol: HTTP/HTTPS
- Receiving Data: Stream, MemoryStream, byte array, low-overhead direct download and storage (resume support).
- Sending Data: byte array, low-overhead direct upload support.
- Settings: HTTP Header, Query String, Cookie, Post Body
- Advanced: Progress, Cache, Redirect, Timeout
- Upload with Stream support
- Cookie Storage
Latest version: v1.0.1
using (URLClient.HTTPClient client = new URLClient.HTTPClient("unity3d.com"))
{
yield return StartCoroutine(client.WaitUntilDone());
///
// check response
// ...
}
You can create a request object with:
URLClient.HTTPRequest request = new URLClient.HTTPRequest();
Then you customize the request like you want like (check API here)
request.SetURL("http://www.google.com").
AppendQueryParameter("q", "unity").
SetHeader("User-Agent", "dummy user agent").
AppendCookie("name", "value").
Get();
Then you create a URLClient with:
using (URLClient.HTTPClient client = new URLClient.HTTPClient(request))
{
yield return StartCoroutine(client.WaitUntilDone());
///
// check response
// ...
}
You can check the response any time during or after you create the client.
It may return null
in case there is no response.
You can get the response with:
if (client.Response == null)
{
// no response yet
}
else
{
// commonly used fields:
// client.Response.StatusCode;
// client.Response.ContentToBytes();
// client.Response.ContentToString();
// client.Response.Progress;
// etc.
}
client.Response
follows the URLClient.IHTTPResponse
interface:
public interface IHTTPResponse
{
long StatusCode { get; }
IHTTPHeaderList Headers { get; }
ulong ExpectedReceiveContentLength { get; }
ulong ResumedContentLength { get; }
ulong ReceivedContentLength { get; }
ulong ExpectedAcquiredContentLength { get; }
ulong AcquiredContentLength { get; }
bool SupportsContentStream { get; }
Stream ContentStream { get; }
bool SupportsContentMemoryStream { get; }
MemoryStream ContentMemoryStream { get; }
bool SupportsContentFilePath { get; }
string ContentFilePath { get; }
byte[] ContentToBytes();
string ContentToString(Encoding enc = null);
int RedirectCount { get; }
bool IsProgressAvailable { get; }
float Progress { get; }
float ReceiveProgress { get; }
}
You can check for error at any time during or after you create the client.
if (client.Error != null)
{
// client.Error.Domain
// client.Error.Code
// client.Error.Description
}
You can cancel a running client at any time with:
client.Cancel();
You don't have to use coroutines. You can create and run a client with:
URLClient.HTTPClient client = new URLClient.HTTPClient(...);
Then, instead of yield return StartCoroutine(client.WaitUntilDone());
you
can call the following at any point in time:
if (client.IsDone)
{
// client finished!
// check client.Response
}
else
{
if (client.Response == null)
{
// no response yet
}
else
{
// check progress with client.Response.Progress
// etc.
}
}
However, you must destroy the client when you don't need it (otherwise you will get memory leaks):
client.Dispose();
client = null;
unity/Assets/URLClient/Demo/URLClientDemo.cs
- Found a bug?
- Want to contribute and add a new feature?
Please fork this project and send me a pull request!
unity-urlclient is licensed under the MIT license:
www.opensource.org/licenses/MIT
Copyright (c) 2013 Mario Freitas. See LICENSE.txt for further details.