private RequestResponse WebServiceRequest(RequestSetttings requestSettings) { RequestResponse result = new RequestResponse(requestSettings); if (connected) { result.responseCode = 200; result.body = SimpleJSON.JSON.Parse("{" + "\"authToken\": \"5a26cb5ac8b102008b41472b5a30078bc8b102008b4147589108928341\", " + "\"actor\": { \"account\": { \"homePage\": \"http://a2:3000/\", \"name\": \"Anonymous\"}, \"name\": \"test-animal-name\"}, " + "\"playerAnimalName\": \"test-animal-name\", " + "\"playerId\": \"5a30078bc8b102008b41475769103\", " + "\"objectId\": \"http://a2:3000/api/proxy/gleaner/games/5a26cb5ac8b102008b41472a/5a26cb5ac8b102008b41472b\", " + "\"session\": 1, " + "\"firstSessionStarted\": \"2017-12-12T16:44:59.273Z\", " + "\"currentSessionStarted\": \"2017-12-12T16:44:59.273Z\" " + "}").ToString(); this.Append("netstorage", requestSettings.body); } else { result.responseCode = 0; } return(result); }
/// <summary> /// Method loading domain model - location specified by settings. /// </summary> /// <returns>Domain Model for the player.</returns> internal DomainModel loadDefaultDomainModel() { loggingDM("Loading default Domain model."); DomainModelAssetSettings dmas = (DomainModelAssetSettings)getDMA().Settings; if (dmas.LocalSource) { IDataStorage ids = DomainModelAsset.Instance.getInterfaceFromAsset <IDataStorage>(); if (ids != null) { if (!ids.Exists(dmas.Source)) { loggingDM("File " + dmas.Source + " not found for loading Domain model.", Severity.Error); //throw new Exception("EXCEPTION: File "+ dmas.Source + " not found for loading Domain model.") ; return(null); } loggingDM("Loading DomainModel from File."); return(this.getDMFromXmlString(ids.Load(dmas.Source))); } else { loggingDM("IDataStorage bridge absent for requested local loading method of the Domain model.", Severity.Error); //throw new Exception("EXCEPTION: IDataStorage bridge absent for requested local loading method of the Domain model."); return(null); } } else { IWebServiceRequest iwr = DomainModelAsset.Instance.getInterfaceFromAsset <IWebServiceRequest>(); if (iwr != null) { loggingDM("Loading web DomainModel."); Uri uri = new Uri(dmas.Source); Dictionary <string, string> headers = new Dictionary <string, string>(); //headers.Add("user", playerId); //string body = dmas.Source; WebServiceResponse wsr = new WebServiceResponse(); //currentPlayerId = playerId; RequestSetttings rs = new RequestSetttings(); rs.method = "GET"; rs.uri = uri; rs.requestHeaders = headers; //rs.body = body; RequestResponse rr = new RequestResponse(); iwr.WebServiceRequest(rs, out rr); return(this.getDMFromXmlString(rr.body)); } else { loggingDM("IWebServiceRequest bridge absent for requested web loading method of the Domain model.", Severity.Error); // new Exception("EXCEPTION: IWebServiceRequest bridge absent for requested web loading method of the Domain model."); return(null); } } }
// See http://stackoverflow.com/questions/12224602/a-method-for-making-http-requests-on-unity-ios // for persistence. // See http://18and5.blogspot.com.es/2014/05/mono-unity3d-c-https-httpwebrequest.html #if ASYNC public void WebServiceRequest(RequestSetttings requestSettings, out RequestResponse requestReponse) { // Wrap the actual method in a Task. Neccesary because we cannot: // 1) Make this method async (out is not allowed) // 2) Return a Task<RequestResponse> as it breaks the interface (only void does not break it). // Task <RequestResponse> taskName = Task.Factory.StartNew <RequestResponse>(() => { return(WebServiceRequestAsync(requestSettings).Result); }); requestReponse = taskName.Result; }
public void WebServiceRequest(RequestSetttings requestSettings, out RequestResponse requestResponse) { string url = requestSettings.uri.AbsoluteUri; if (string.Equals(requestSettings.method, "get", StringComparison.CurrentCultureIgnoreCase)) { try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestSettings.uri); HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse(); Stream resStream = webResponse.GetResponseStream(); Dictionary <string, string> responseHeader = new Dictionary <string, string>(); foreach (string key in webResponse.Headers.AllKeys) { responseHeader.Add(key, webResponse.Headers[key]); } StreamReader reader = new StreamReader(resStream); string dm = reader.ReadToEnd(); requestResponse = new RequestResponse(); requestResponse.method = requestSettings.method; requestResponse.requestHeaders = requestSettings.requestHeaders; requestResponse.responseCode = (int)webResponse.StatusCode; requestResponse.responseHeaders = responseHeader; requestResponse.responsMessage = dm; requestResponse.uri = requestSettings.uri; } catch (Exception e) { requestResponse = new RequestResponse(); requestResponse.method = requestSettings.method; requestResponse.requestHeaders = requestSettings.requestHeaders; requestResponse.responsMessage = "FAIL"; requestResponse.uri = requestSettings.uri; } } else { requestResponse = new RequestResponse(); requestResponse.method = requestSettings.method; requestResponse.requestHeaders = requestSettings.requestHeaders; requestResponse.responsMessage = "FAIL"; requestResponse.uri = requestSettings.uri; } }
public void WebServiceRequestAsync(RequestSetttings requestSettings, Action <RequestResponse> callback) { // Force Update auth params apiClient.UpdateParamsForAuth(null, requestSettings.requestHeaders, new string[] { "OAuth2" }, true) .Then(() => { unityBridge.WebServiceRequestAsync(requestSettings, callback); }) .Catch(ex => { RequestResponse response = new RequestResponse { body = ex.Message, responseCode = ex is ApiException apiEx ? apiEx.ErrorCode : 401 }; }); }
/// <summary> /// Web service request. /// </summary> /// /// <param name="requestSettings">Options for controlling the operation. </param> /// /// <returns> /// A RequestResponse. /// </returns> private RequestResponse WebServiceRequest(RequestSetttings requestSettings) #endif { RequestResponse result = new RequestResponse(requestSettings); try { //! Might throw a silent System.IOException on .NET 3.5 (sync). HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestSettings.uri); request.Method = requestSettings.method; // Both Accept and Content-Type are not allowed as Headers in a HttpWebRequest. // They need to be assigned to a matching property. if (requestSettings.requestHeaders.ContainsKey("Accept")) { request.Accept = requestSettings.requestHeaders["Accept"]; } if (!String.IsNullOrEmpty(requestSettings.body)) { byte[] data = Encoding.UTF8.GetBytes(requestSettings.body); if (requestSettings.requestHeaders.ContainsKey("Content-Type")) { request.ContentType = requestSettings.requestHeaders["Content-Type"]; } foreach (KeyValuePair <string, string> kvp in requestSettings.requestHeaders) { if (kvp.Key.Equals("Accept") || kvp.Key.Equals("Content-Type")) { continue; } request.Headers.Add(kvp.Key, kvp.Value); } request.ContentLength = data.Length; // See https://msdn.microsoft.com/en-us/library/system.net.servicepoint.expect100continue(v=vs.110).aspx // A2 currently does not support this 100-Continue response for POST requets. request.ServicePoint.Expect100Continue = false; #if ASYNC Stream stream = await request.GetRequestStreamAsync(); await stream.WriteAsync(data, 0, data.Length); stream.Close(); #else Stream stream = request.GetRequestStream(); stream.Write(data, 0, data.Length); stream.Close(); #endif } else { foreach (KeyValuePair <string, string> kvp in requestSettings.requestHeaders) { if (kvp.Key.Equals("Accept") || kvp.Key.Equals("Content-Type")) { continue; } request.Headers.Add(kvp.Key, kvp.Value); } } #if ASYNC WebResponse response = await request.GetResponseAsync(); #else WebResponse response = request.GetResponse(); #endif if (response.Headers.HasKeys()) { foreach (string key in response.Headers.AllKeys) { result.responseHeaders.Add(key, response.Headers.Get(key)); } } result.responseCode = (int)(response as HttpWebResponse).StatusCode; using (StreamReader reader = new StreamReader(response.GetResponseStream())) { #if ASYNC result.body = await reader.ReadToEndAsync(); #else result.body = reader.ReadToEnd(); #endif } } catch (Exception e) { result.responsMessage = e.Message; Log(Severity.Error, String.Format("{0} - {1}", e.GetType().Name, e.Message)); } return(result); }
/// <summary> /// Web service request. /// </summary> /// /// <param name="requestSettings"> Options for controlling the operation. </param> /// <param name="requestResponse"> The request response. </param> public void WebServiceRequest(RequestSetttings requestSettings, out RequestResponse requestResponse) { requestResponse = WebServiceRequest(requestSettings); }
/// <summary> /// Web service request. /// </summary> /// /// <param name="requestSettings"> Options for controlling the operation. </param> /// /// <returns> /// A RequestResponse. /// </returns> private async Task <RequestResponse> WebServiceRequestAsync(RequestSetttings requestSettings)
public void WebServiceRequest(RequestSetttings requestSettings, out RequestResponse requestResponse) { // Force Update auth params apiClient.UpdateParamsForAuth(null, requestSettings.requestHeaders, new string[] { "OAuth2" }, false); unityBridge.WebServiceRequest(requestSettings, out requestResponse); }
public void WebServiceRequestAsync(RequestSetttings requestSettings, Action <RequestResponse> callback) { var response = this.WebServiceRequest(requestSettings); callback(response); }
public void WebServiceRequest(RequestSetttings requestSettings, out RequestResponse requestResponse) { var result = new RequestResponse(requestSettings); try { var request = (HttpWebRequest)WebRequest.Create(requestSettings.uri); var stream = request.GetRequestStream(); request.Method = requestSettings.method; if (requestSettings.requestHeaders.ContainsKey("Accept")) { request.Accept = requestSettings.requestHeaders["Accept"]; } if (!string.IsNullOrEmpty(requestSettings.body)) { var data = Encoding.UTF8.GetBytes(requestSettings.body); if (requestSettings.requestHeaders.ContainsKey("Content-Type")) { request.ContentType = requestSettings.requestHeaders["Content-Type"]; } foreach (var kvp in requestSettings.requestHeaders) { if (kvp.Key.Equals("Accept") || kvp.Key.Equals("Content-Type")) { continue; } request.Headers.Add(kvp.Key, kvp.Value); } request.ContentLength = data.Length; request.ServicePoint.Expect100Continue = false; stream.Write(data, 0, data.Length); stream.Close(); } else { foreach (var kvp in requestSettings.requestHeaders) { if (kvp.Key.Equals("Accept") || kvp.Key.Equals("Content-Type")) { continue; } request.Headers.Add(kvp.Key, kvp.Value); } } var response = request.GetResponse(); if (response.Headers.HasKeys()) { foreach (var key in response.Headers.AllKeys) { result.responseHeaders.Add(key, response.Headers.Get(key)); } } result.responseCode = (int)((HttpWebResponse)response).StatusCode; using (var reader = new StreamReader(stream)) { result.body = reader.ReadToEnd(); } } catch (Exception e) { result.responsMessage = e.Message; Log(Severity.Error, string.Format("{0} - {1}", e.GetType().Name, e.Message)); } requestResponse = result; }