Ejemplo n.º 1
1
        public new IAsyncResult BeginGetResponse (AsyncCallback callback, object state)
        {
            var result = new NetAsyncResult (state);

            xhr = new XmlHttpRequest ();


            xhr.ReadyStateChange += e =>
            {
                if (this.xhr.readyState == this.xhr.DONE) {
                    callback (result);
                }
            };

            if (Method == null)
            {
                Method = "GET";
            }

            xhr.Open (Method, this.uri.AbsoluteUri);

            if (this._headers != null) {
                for (int i = 0; i < this.Headers.Count; i++) {
                    var key = this.Headers.GetKey (i);
                    xhr.SetRequestHeader (key, this.Headers[key]);
                }
            }

             if (this._requestStream != null)
            {
                var sr = new System.IO.StreamReader (this._requestStream);
                var requestDataStr = sr.ReadToEnd();
                xhr.Send(requestDataStr);
            } else {
                xhr.Send ();
            }

            return result;
        }
Ejemplo n.º 2
1
        private static XmlHttpResponse ProxyRequest(
            XmlHttpRequest xmlHttpRequest,
            X509Certificate2 clientCert)
        {
            var httpKeyUri = HttpKeyUri.BuildHttpKeyUri(xmlHttpRequest.url);

            HttpWebRequest webRequest = ThaliClientToDeviceHubUtilities.CreateThaliWebRequest(httpKeyUri, clientCert);

            webRequest.Method = xmlHttpRequest.method;

            // There are multiple headers that cannot be set directly via webRequest.Headers. I only catch
            // two below that seem of some reasonable use.
            foreach (var headerNameValue in xmlHttpRequest.headers)
            {
                if (headerNameValue.Key.Equals("Accept", StringComparison.OrdinalIgnoreCase))
                {
                    webRequest.Accept = headerNameValue.Value;
                }
                else if (headerNameValue.Key.Equals("Content-Type", StringComparison.OrdinalIgnoreCase))
                {
                    webRequest.ContentType = headerNameValue.Value;
                }
                else
                {
                    webRequest.Headers.Add(headerNameValue.Key, headerNameValue.Value);
                }
            }

            if (string.IsNullOrWhiteSpace(xmlHttpRequest.requestText))
            {
                return ProcessResponse(xmlHttpRequest.transactionId, webRequest);
            }

            var bodyAsBytes = Encoding.UTF8.GetBytes(xmlHttpRequest.requestText);
            webRequest.GetRequestStream().Write(bodyAsBytes, 0, bodyAsBytes.Count());

            var response = ProcessResponse(xmlHttpRequest.transactionId, webRequest);

            return response;
        }
Ejemplo n.º 3
0
 public ClientHttpWebRequest(Uri uri)
 {
     this.requestUri = uri;
     this.request = new XmlHttpRequest();
     this.Method = "GET"; // Default method is GET            
     this.request.OnReadyStateChange = this.OnStateChanged;
 }
Ejemplo n.º 4
0
        public IHttpRequestAsyncHandle AsPostAsync(Action <IHttpResponse> action, string httpMethod)
        {
            if (monoBehaviour == null)
            {
                throw new InvalidOperationException("The MonoBehaviour property must be set before invoking WebGLHttpRequest.AsPostAsync()");
            }
            XmlHttpRequest webRequest = PutPostInternalAsync(httpMethod.ToUpperInvariant(), action);

            return(new WebGLHttpRequestAsyncHandle(webRequest));
        }
Ejemplo n.º 5
0
        public IApiRequest CreateRequest(string MethodName, DataItemCollection Parameters)
        {
            XmlHttpRequest    request = new XmlHttpRequest();
            XmlHttpMethodCall method  = new XmlHttpMethodCall();

            method.MethodName  = MethodName;
            method.Parameters  = (Parameters ?? method.Parameters);
            request.MethodCall = method;

            return(request);
        }
Ejemplo n.º 6
0
        public void HashShouldNotBeSent()
        {
            var sync             = new Object();
            var resourceProvider = Mocks.ResourceProvider("http://data", "hello");
            var xhr = new XmlHttpRequest(resourceProvider, () => sync, null, (s, s1) => new Request(s1, UriHelper.GetUri(s)));

            xhr.Open("GET", "http://data#some", false);
            xhr.Send();

            Assert.AreEqual("hello", xhr.Response);
        }
Ejemplo n.º 7
0
        XmlHttpRequest Send(string type, string data)
        {
            var sync             = new Object();
            var resourceProvider = Mocks.ResourceProvider("http://data", data);
            var xhr = new XmlHttpRequest(resourceProvider, () => sync, null, (s, s1) => new Request(s1, UriHelper.GetUri(s)));

            xhr.Open("GET", "http://data", false);
            xhr.ResponseType = type;
            xhr.Send();
            return(xhr);
        }
Ejemplo n.º 8
0
        private void LogHttpRequest(XmlHttpRequest request)
        {
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append("HttpRequest ").Append(RequestId).AppendLine();
            stringBuilder.Append("Uri: ").AppendLine(request.Url.AbsoluteUri);
            stringBuilder.Append("Method: ").AppendLine(request.Method);
            stringBuilder.AppendLine("Headers:");
            foreach (string key in request.RequestHeaders.Keys)
            {
                stringBuilder.Append(key).Append(": ").AppendLine(request.RequestHeaders[key]);
            }
            logger.DebugFormat("{0:g}", stringBuilder);
        }
Ejemplo n.º 9
0
 private void PreparePostBody(XmlHttpRequest webRequest)
 {
     if (HasFiles || AlwaysMultipartFormData)
     {
         webRequest.ContentType = GetMultipartFormContentType();
     }
     else if (HasParameters)
     {
         webRequest.ContentType = "application/x-www-form-urlencoded";
         RequestBody            = EncodeParameters();
     }
     else if (HasBody)
     {
         webRequest.ContentType = RequestContentType;
     }
 }
Ejemplo n.º 10
0
        public ApiResponse ExecuteRequest(IApiRequest request)
        {
            XmlHttpRequest httpRequest = (XmlHttpRequest)request;

            string requestRaw = httpRequest.Serialize();

            SetLastRequestRaw(requestRaw);

            HttpResponse response = HttpTools.GetResponseFromPost(this.ApiUrl, requestRaw);

            string strResponseText = response.ResponseText;

            SetLastResponseRaw(strResponseText);

            return(GetResponseFromXml(strResponseText));
        }
Ejemplo n.º 11
0
        public ApiResponse ExecuteRequestWithUpload(IApiRequest ApiRequest, string UploadFileName, string UploadFieldName, string UploadFileContentType, System.Collections.Specialized.NameValueCollection PostData)
        {
            XmlHttpRequest xmlHttpRequest = (XmlHttpRequest)ApiRequest;

            string xmlMessage = xmlHttpRequest.Serialize();

            SetLastRequestRaw(xmlMessage);
            PostData.Add("XMLMessage", xmlMessage);

            System.Net.HttpWebResponse response = HttpTools.HttpUploadFile(this.ApiUrl, UploadFileName, UploadFieldName, UploadFileContentType, PostData);

            string strResponseText = response.GetResponseText();

            SetLastResponseRaw(strResponseText);

            return(GetResponseFromXml(strResponseText));
        }
Ejemplo n.º 12
0
        private XmlHttpRequest PutPostInternalAsync(string method, Action <IHttpResponse> callback)
        {
            XmlHttpRequest xmlHttpRequest = null;

            try
            {
                xmlHttpRequest = ConfigureWebRequest(method, Url);
                PreparePostBody(xmlHttpRequest);
                LogHttpRequest(xmlHttpRequest);
                WriteRequestBodyAsync(xmlHttpRequest, callback);
            }
            catch (Exception ex)
            {
                Debug.LogException(ex);
                ExecuteCallback(CreateErrorResponse(ex), callback);
            }
            return(xmlHttpRequest);
        }
Ejemplo n.º 13
0
 private void AppendHeaders(XmlHttpRequest webRequest)
 {
     foreach (HttpHeader header in Headers)
     {
         if (string.Equals(header.Name, "Accept", StringComparison.OrdinalIgnoreCase))
         {
             webRequest.RequestHeaders.Add(header.Name, header.Value + ";q=0.9,*/*;q=0.8");
         }
         else if (_restrictedHeaderActions.ContainsKey(header.Name))
         {
             _restrictedHeaderActions[header.Name](webRequest, header.Value);
         }
         else
         {
             webRequest.RequestHeaders.Add(header.Name, header.Value);
         }
     }
 }
        private static void pollJira()
        {
            clearPollTimer();
            pollNowButton.Disabled = true;
            string url =
                serverUrl
                + "/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?jqlQuery=project+%3D+"
                + projectKey
                + "+AND+"
                + currentFilter.FilterDef
                + "&tempMax=1000";

            labelInfo.InnerHTML = "Polling JIRA server...";

            req = new XmlHttpRequest();
            req.Open("GET", getAuthenticatedUrl(url));
            req.OnReadyStateChange = onReadyStateChange;
            req.Send();
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Gets a location of an address from Google Maps
        /// </summary>
        /// <param name="strAddress"></param>
        /// <returns></returns>
        public Location GetLocation(string strAddress)
        {
            Location       resultLocation          = null;
            XmlHttpRequest xmlHttp                 = new XmlHttpRequest();
            Dictionary <string, string> parameters = GetGeoLocationQueryParameteres(strAddress);
            Task <string> strJSONResponse          = null;

            try
            {
                // does the http request
                strJSONResponse = xmlHttp.DoGetRequestAsync(_baseURL, parameters);

                GoogleGeoCodeResponse googleResponse = JsonConvert.DeserializeObject <GoogleGeoCodeResponse>(strJSONResponse.Result);

                if (googleResponse.status == "OK")
                {
                    if (googleResponse.results.Length == 1)
                    {
                        resultLocation      = new Location();
                        resultLocation.City = (googleResponse.GetAddressComponent("locality") != null ?
                                               googleResponse.GetAddressComponent("locality").long_name :
                                               (
                                                   googleResponse.GetAddressComponent("postal_town") != null ?
                                                   googleResponse.GetAddressComponent("postal_town").long_name :
                                                   null)
                                               );

                        resultLocation.Latitude  = decimal.Parse(googleResponse.results[0].geometry.location.lat.Replace(".", ","));
                        resultLocation.Longitude = decimal.Parse(googleResponse.results[0].geometry.location.lng.Replace(".", ","));
                        resultLocation.Address1  = googleResponse.results[0].formatted_address;
                        resultLocation.Country   = googleResponse.GetAddressComponent("country").long_name;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }



            return(resultLocation);
        }
Ejemplo n.º 16
0
 private void CORS()
 {
     xhr = new XmlHttpRequest();
     try
     {
         xhr.Open(HttpVerb.Get, _url);
         xhr.OnReadyStateChange = delegate()
         {
             if (xhr.ReadyState == ReadyState.Loaded)
             {
                 LoadData(xhr.ResponseText);
             }
         };
         xhr.Send();
     }
     catch (Exception err)
     {
         _message = err.Message;
         State    = StateType.Error;
         throw (err);
     }
 }
Ejemplo n.º 17
0
        /// <summary>
        /// Loads up the artists events
        /// </summary>
        /// <param name="artist"></param>
        /// <returns></returns>
        private List <Event> LoadEvents(Artist artist)
        {
            int            currentPage             = 1;
            int            totalPages              = 1;
            XmlHttpRequest xmlHttp                 = new XmlHttpRequest();
            Dictionary <string, string> parameters = GetEventsInfoParameteres(artist.Name);
            XmlDocument   xmlDoc    = null;
            Task <string> strXmlStr = null;
            List <Event>  eventList = new List <Event>();

            try
            {
                while (currentPage <= totalPages)
                {
                    // updates the page current parameter
                    parameters["page_number"] = currentPage.ToString();

                    // does the http request
                    strXmlStr = xmlHttp.DoGetRequestAsync(_eventsDataBaseURL, parameters);

                    // loads up de text into the XmlDocument
                    xmlDoc = new XmlDocument();
                    xmlDoc.LoadXml(strXmlStr.Result);

                    // parses the XML Doc
                    totalPages = ParseEventsXml(xmlDoc, ref eventList);

                    currentPage++;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(eventList);
        }
Ejemplo n.º 18
0
 private void WriteRequestBodyAsync(XmlHttpRequest webRequest, Action <IHttpResponse> callback)
 {
     if (HasBody || HasFiles || AlwaysMultipartFormData)
     {
         if (RequestBodyBytes != null)
         {
             webRequest.Send(RequestBodyBytes);
         }
         else if (RequestBody != null)
         {
             webRequest.SendText(RequestBody);
         }
         else
         {
             webRequest.Send();
         }
         monoBehaviour.StartCoroutine(GetResponse(callback, webRequest));
     }
     else
     {
         webRequest.Send();
         monoBehaviour.StartCoroutine(GetResponse(callback, webRequest));
     }
 }
Ejemplo n.º 19
0
        public void ResponseTypeArrayBuffer()
        {
            var sync             = new Object();
            var resourceProvider = Mocks.ResourceProvider("http://data", new byte[] { 10, 1, 0 });
            var xhr = new XmlHttpRequest(resourceProvider, () => sync, null, (s, s1) => new Request(s1, UriHelper.GetUri(s)));

            xhr.Open("GET", "http://data", false);
            xhr.ResponseType = "arraybuffer";
            xhr.Send();

            Assert.IsInstanceOf <ArrayBuffer>(xhr.Response);
            var buffer = (ArrayBuffer)xhr.Response;

            Assert.AreEqual(3, buffer.ByteLength);
            var barr = new Int8Array(buffer);

            Assert.AreEqual(10, barr[0]);
            Assert.AreEqual(1, barr[1]);
            Assert.AreEqual(0, barr[2]);
            Assert.Throws <Exception>(() =>
            {
                var x = xhr.ResponseText;
            });
        }
Ejemplo n.º 20
0
        public override void LoadData(string path)
        {
            table = new Table();

            XmlHttpRequest xhr = new XmlHttpRequest();

            xhr.Open(HttpVerb.Get, path);
            xhr.OnReadyStateChange = delegate()
            {
                if (xhr.ReadyState == ReadyState.Loaded)
                {
                    table.LoadFromString(xhr.ResponseText, false, true, true);
                    ComputeDateDomainRange(-1, -1);

                    if (DynamicData && AutoUpdate)
                    {
                        DynamicUpdate();
                    }
                    dataDirty = true;
                    dirty     = true;
                }
            };
            xhr.Send();
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Loads the artist's albums from lastFM
        /// </summary>
        /// <param name="artistResult"></param>
        private void LoadAlbumInfo(Artist artist, Album album)
        {
            XmlHttpRequest xmlHttp = new XmlHttpRequest();
            Dictionary <string, string> parameters = GetAlbumInfoParameteres(artist, album);
            XmlDocument   xmlDoc    = null;
            Task <string> strXmlStr = null;

            try
            {
                // does the http request
                strXmlStr = xmlHttp.DoGetRequestAsync(_baseURL, parameters);

                // loads up de text into the XmlDocument
                xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(strXmlStr.Result);

                // parses the XML Doc into the artist structure
                ParseAlbumXml(artist, album, xmlDoc);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private static XmlDocument GetResponse(string soapXmlPacket, string action, Action <object> asyncCallback)
        {
            bool isAsync = (asyncCallback != null);

            string         xml            = getSoapEnvelope(soapXmlPacket);
            Exception      msg            = null;
            XmlHttpRequest xmlHttpRequest = new XmlHttpRequest();



            xmlHttpRequest.Open("POST", GetServerUrl() + "/XRMServices/2011/Organization.svc/web", isAsync);
            xmlHttpRequest.SetRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/" + action);
            xmlHttpRequest.SetRequestHeader("Content-Type", "text/xml; charset=utf-8");

            // This is only needed when debugging via localhost - and accessing the CRM webservices cross domain in chrome
            if (WithCredentials)
            {
                Script.Literal("{0}.withCredentials = true;", xmlHttpRequest);
            }

            if (isAsync)
            {
                xmlHttpRequest.OnReadyStateChange = delegate()
                {
                    if (xmlHttpRequest == null)
                    {
                        return;
                    }
                    if (xmlHttpRequest.ReadyState == ReadyState.Loaded)
                    {
                        // Capture the result
                        XmlDocument resultXml = xmlHttpRequest.ResponseXml;
                        Exception   errorMsg  = null;
                        if (xmlHttpRequest.Status != 200)
                        {
                            errorMsg = GetSoapFault(resultXml);
                        }
                        // Tidy Up
                        Script.Literal("delete {0}", xmlHttpRequest);

                        xmlHttpRequest = null;

                        if (errorMsg != null)
                        {
                            asyncCallback(errorMsg);
                        }
                        else
                        {
                            // Callback
                            asyncCallback(resultXml);
                        }
                    }
                };

                xmlHttpRequest.Send(xml);

                return(null);
            }
            else
            {
                xmlHttpRequest.Send(xml);

                // Capture the result
                XmlDocument resultXml = xmlHttpRequest.ResponseXml;

                // Check for errors.
                if (xmlHttpRequest.Status != 200)
                {
                    msg = GetSoapFault(resultXml);
                }
                // Tidy Up
                Script.Literal("delete {0};", xmlHttpRequest);
                xmlHttpRequest = null;

                if (msg != null)
                {
                    throw msg;
                }
                else
                {
                    // Return
                    return(resultXml);
                }
            }
        }
Ejemplo n.º 23
0
 private void AddRange(XmlHttpRequest r, string range)
 {
     r.RequestHeaders.Add("Range", range);
 }
Ejemplo n.º 24
0
 private void AppendCookies(XmlHttpRequest webRequest)
 {
 }
Ejemplo n.º 25
0
        private static XmlHttpResponse ExecuteProvisionLocalHubToRemoteHub(
            XmlHttpRequest xmlHttpRequest,
            X509Certificate2 clientCert)
        {
            var remoteHubHttpKeyUri = DiscoverRootCertIfNeeded(HttpKeyUri.BuildHttpKeyUri(xmlHttpRequest.url), clientCert);

            var localHubHttpKeyUri = HttpKeyUri.BuildHttpKeyUri(xmlHttpRequest.requestText);

            ThaliClientToDeviceHubUtilities.ProvisionKeyInPrincipalDatabase(remoteHubHttpKeyUri.ServerPublicKey, remoteHubHttpKeyUri.Host, remoteHubHttpKeyUri.Port, localHubHttpKeyUri.ServerPublicKey, clientCert);

            return new XmlHttpResponse
            {
                status = 200,
                transactionId = xmlHttpRequest.transactionId,
                responseText = remoteHubHttpKeyUri.AbsoluteUri
            };
        }
Ejemplo n.º 26
0
        private static XmlHttpResponse ExecuteProvisionLocalClientToLocalHub(
            XmlHttpRequest xmlHttpRequest,
            X509Certificate2 clientCert)
        {
            var hubHttpKeyUri = DiscoverRootCertIfNeeded(HttpKeyUri.BuildHttpKeyUri(xmlHttpRequest.url), clientCert);

            ThaliClientToDeviceHubUtilities.ProvisionThaliClient(
                hubHttpKeyUri.ServerPublicKey,
                hubHttpKeyUri.Host,
                hubHttpKeyUri.Port,
                clientCert);

            return new XmlHttpResponse { status = 200, transactionId = xmlHttpRequest.transactionId, responseText = hubHttpKeyUri.AbsoluteUri };
        }
Ejemplo n.º 27
0
        public static object ProcessMessage(XmlHttpRequest xmlHttpRequest, X509Certificate2 clientCert)
        {
            Debug.Assert(xmlHttpRequest != null && clientCert != null);
            if (xmlHttpRequest.type != XmlHttpRequest.typeValue)
            {
                return
                    ProcessHostError(
                        "The type of the incoming request was " + xmlHttpRequest.type + " and not "
                        + XmlHttpRequest.typeValue + " as required.",
                        xmlHttpRequest);
            }

            try
            {
                switch (xmlHttpRequest.method)
                {
                    case ProvisionClientToHub:
                        return ExecuteProvisionLocalClientToLocalHub(xmlHttpRequest, clientCert);
                    case ProvisionLocalHubToRemoteHub:
                        return ExecuteProvisionLocalHubToRemoteHub(xmlHttpRequest, clientCert);
                    default:
                        var stopwatch = new Stopwatch();
                        stopwatch.Start();
                        var result = ProxyRequest(xmlHttpRequest, clientCert);
                        stopwatch.Stop();
                        Debug.WriteLine("Method: " + xmlHttpRequest.method + ", elapsed Time: " + stopwatch.ElapsedMilliseconds + ", id: " + xmlHttpRequest.transactionId);
                        return result;
                }
            }
            catch (Exception e)
            {
                return ProcessHostError("Received exception: " + e.Message, xmlHttpRequest);
            }
        }
Ejemplo n.º 28
0
 public static object ProcessHostError(string errorMessage, XmlHttpRequest xmlHttpRequest)
 {
     var xmlHttpResponse = new XmlHttpResponse
                               {
                                   transactionId =
                                       xmlHttpRequest != null
                                           ? xmlHttpRequest.transactionId
                                           : null,
                                   status = 502,
                                   responseText = errorMessage
                               };
     xmlHttpResponse.headers.Add("content-type", "text/plain");
     return xmlHttpResponse;
 }
Ejemplo n.º 29
0
 public WebGLHttpRequestAsyncHandle(XmlHttpRequest webRequest)
 {
     _webRequest = webRequest;
 }