private SendRequest ( string urlInfo, string postData, int urlAttempt ) : void | ||
urlInfo | string | |
postData | string | |
urlAttempt | int | |
return | void |
internal void SendRequest(string urlInfo, string postData, int urlAttempt)
{
this.currentUrl = urlInfo;
this.currentPostData = postData;
this.currentUrlAttempt = urlAttempt;
string url = urlInfo + "&sdk_retry_attempt=" + urlAttempt;
var request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
request.AllowReadStreamBuffering = false;
request.BeginGetRequestStream(GetRequestStreamCallback, request);
}
// Send all queued requests internal void DumpQueue() { // Check for internet connectivity and return immediately if none found if (!DeviceNetworkInformation.IsNetworkAvailable) return; // Get existing event queue if (IsolatedStorageSettings.ApplicationSettings.Contains(MATConstants.SETTINGS_MATEVENTQUEUE_KEY) && IsolatedStorageSettings.ApplicationSettings[MATConstants.SETTINGS_MATEVENTQUEUE_KEY].GetType() == typeof(List<MATUrlBuilder.URLInfo>)) //This only needs to be entered if a request was previously added to the queue { List<MATUrlBuilder.URLInfo> eventQueue = (List<MATUrlBuilder.URLInfo>)IsolatedStorageSettings.ApplicationSettings[MATConstants.SETTINGS_MATEVENTQUEUE_KEY]; List<MATUrlBuilder.URLInfo> sentEvents = new List<MATUrlBuilder.URLInfo>(); if (eventQueue.Count == 0) return; foreach (MATUrlBuilder.URLInfo url in eventQueue) { if (parameters.DebugMode) Debug.WriteLine("Sending MAT event to server..."); MATUrlRequester urlRequester = new MATUrlRequester(parameters, this); //Individual fields are required for each async request urlRequester.SendRequest(url); // Build list of urls to remove sentEvents.Add(url); if (parameters.DebugMode) Debug.WriteLine("MAT request sent"); } // Remove all the urls we sent so collection is not modified in loop foreach (MATUrlBuilder.URLInfo url in sentEvents) { eventQueue.Remove(url); } SaveLocalSetting(MATConstants.SETTINGS_MATEVENTQUEUE_KEY, eventQueue); } }