fixed http request halting the main thread

This commit is contained in:
Evil Factory
2021-09-23 16:09:38 -03:00
parent dac0734401
commit 1f04fea3cc
@@ -461,7 +461,7 @@ namespace Barotrauma
} }
#endif #endif
public string RequestPostHTTP(string url, string data, string contentType = "application/json") public void RequestPostHTTP(string url, object callback, string data, string contentType = "application/json")
{ {
try try
{ {
@@ -472,27 +472,35 @@ namespace Barotrauma
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
streamWriter.Write(data); streamWriter.Write(data);
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); httpWebRequest.BeginGetResponse(new AsyncCallback((IAsyncResult result) =>
using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
return streamReader.ReadToEnd(); var httpResponse = httpWebRequest.EndGetResponse(result);
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
env.CallFunction(callback, new object[] { streamReader.ReadToEnd() });
}), null);
}catch(Exception e) }catch(Exception e)
{ {
return e.ToString(); env.CallFunction(callback, new object[] { e.ToString() });
} }
} }
public string RequestGetHTTP(string url) public void RequestGetHTTP(string url, object callback)
{ {
try try
{ {
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); httpWebRequest.BeginGetResponse(new AsyncCallback((IAsyncResult result) =>
using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
return streamReader.ReadToEnd(); var httpResponse = httpWebRequest.EndGetResponse(result);
}catch(Exception e) using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
env.CallFunction(callback, new object[] { streamReader.ReadToEnd() });
}), null);
}
catch(Exception e)
{ {
return e.ToString(); env.CallFunction(callback, new object[] { e.ToString() });
} }
} }
} }