예제 #1
0
        /// <summary>
        /// Make a GET request
        /// </summary>
        /// <returns><c>Task&lt;Response&gt;</c></returns>
        public async Task <CXResponse> Get()
        {
            string tempUrl = url;

            if (mHttpContent != null)
            {
                tempUrl += "?" + await mHttpContent.ReadAsStringAsync().AsTask(cts.Token).ConfigureAwait(false);
            }
            else if (rawData != "")
            {
                tempUrl += "?" + rawData;
            }
            else if (data.Count > 0)
            {
                HttpFormUrlEncodedContent content = new HttpFormUrlEncodedContent(data);
                string p = await content.ReadAsStringAsync().AsTask(cts.Token).ConfigureAwait(false);

                tempUrl += "?" + p;
            }
            Uri uri = new Uri(tempUrl);

            PrepareRequest(uri);
            HttpResponseMessage res = await mHttpClient.GetAsync(uri).AsTask(cts.Token).ConfigureAwait(false);

            return(new CXResponse(res, mFilter.CookieManager.GetCookies(uri)));
        }
        public async Task <SearchResponse> PerformSearch(string query, SearchField field, int page = 1)
        {
            UriBuilder uriBuilder = new UriBuilder("http://openlibrary.org/search.json");

            var kvp = new List <KeyValuePair <string, string> >();

            switch (field)
            {
            case SearchField.Author:
                kvp.Add(new KeyValuePair <string, string>("author", query));
                break;

            case SearchField.Title:
                kvp.Add(new KeyValuePair <string, string>("title", query));
                break;

            case SearchField.Query:
                kvp.Add(new KeyValuePair <string, string>("q", query));
                break;
            }

            kvp.Add(new KeyValuePair <string, string>("page", page.ToString()));

            using (var content = new HttpFormUrlEncodedContent(kvp.ToArray()))
            {
                uriBuilder.Query = content.ReadAsStringAsync().GetResults();
            }


            HttpResponseMessage response = new HttpResponseMessage();
            string responseBody          = "";

            response = await m_client.GetAsync(uriBuilder.Uri);

            response.EnsureSuccessStatusCode();
            responseBody = await response.Content.ReadAsStringAsync();

            SearchResponse searchResponse = new SearchResponse();

            searchResponse.books = new List <Book>();

            JsonObject root = JsonObject.Parse(responseBody).GetObject();

            searchResponse.numFound = (int)root.GetNamedNumber("numFound");
            searchResponse.start    = (int)root.GetNamedNumber("start");

            JsonArray docs = root.GetNamedArray("docs");

            for (int i = 0; i < docs.Count; ++i)
            {
                searchResponse.books.Add(Book.FromJsonObject(docs[i].GetObject()));
            }

            return(searchResponse);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="baseUrl">"https://api.site.com"</param>
        /// <param name="endPointPath">"Person/Login"</param>
        /// <param name="queryStringParameters">["location"]="Denver"</param>
        /// <returns></returns>
        public static async Task <Uri> BuildUri(string baseUrl, string endPointPath, Dictionary <string, string> queryStringParameters)
        {
            string fixedBaseUrl  = baseUrl.TrimEnd('/') + "/";
            string fixedEndPoint = endPointPath.TrimStart('/');
            var    builder       = new UriBuilder(fixedBaseUrl + fixedEndPoint);
            //     builder.Port = -1;
            HttpFormUrlEncodedContent encodedQueryString = new HttpFormUrlEncodedContent(queryStringParameters);

            builder.Query = await encodedQueryString.ReadAsStringAsync();

            return(builder.Uri);
        }
예제 #4
0
        private async Task <HttpResponseMessage> ExecuteCommandUsingRESTApi(string ipAddress, string username, string password, string runCommand, bool isOutputRequired = true)
        {
            var client  = new HttpClient();
            var command = CryptographicBuffer.ConvertStringToBinary(runCommand, BinaryStringEncoding.Utf8);
            var runAsDefaultAccountFalse = CryptographicBuffer.ConvertStringToBinary("false", BinaryStringEncoding.Utf8);
            var timeout = CryptographicBuffer.ConvertStringToBinary(String.Format("{0}", TimeOutAfterNoOutput.TotalMilliseconds), BinaryStringEncoding.Utf8);

            var urlContent = new HttpFormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("command", CryptographicBuffer.EncodeToBase64String(command)),
                new KeyValuePair <string, string>("runasdefaultaccount", CryptographicBuffer.EncodeToBase64String(runAsDefaultAccountFalse)),
                new KeyValuePair <string, string>("timeout", CryptographicBuffer.EncodeToBase64String(timeout)),
            });

            var wdpCommand = isOutputRequired ? WdpRunCommandWithOutputApi : WdpRunCommandApi;
            var uriString  = String.Format("{0}://{1}:{2}{3}?{4}", DefaultProtocol, ipAddress, DefaultPort, wdpCommand, await urlContent.ReadAsStringAsync());
            var uri        = new Uri(uriString);

            var authBuffer = CryptographicBuffer.ConvertStringToBinary(String.Format("{0}:{1}", username, password), BinaryStringEncoding.Utf8);

            client.DefaultRequestHeaders.Authorization = new HttpCredentialsHeaderValue("Basic", CryptographicBuffer.EncodeToBase64String(authBuffer));

            HttpResponseMessage response = await client.PostAsync(uri, null);

            return(response);
        }
예제 #5
0
        private static async Task <HttpResponseMessage> EnableCmdExe(string ipAddress, string username, string password, string runCommand)
        {
            HttpClient client       = new HttpClient();
            var        command      = CryptographicBuffer.ConvertStringToBinary(runCommand, BinaryStringEncoding.Utf8);
            var        runAsdefault = CryptographicBuffer.ConvertStringToBinary("false", BinaryStringEncoding.Utf8);

            var urlContent = new HttpFormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("command", CryptographicBuffer.EncodeToBase64String(command)),
                new KeyValuePair <string, string>("runasdefaultaccount", CryptographicBuffer.EncodeToBase64String(runAsdefault)),
            });

            Uri uri = new Uri("http://" + ipAddress + ":8080/api/iot/processmanagement/runcommand?" + await urlContent.ReadAsStringAsync());

            var authBuffer = CryptographicBuffer.ConvertStringToBinary(username + ":" + password, BinaryStringEncoding.Utf8);

            client.DefaultRequestHeaders.Authorization = new HttpCredentialsHeaderValue("Basic", CryptographicBuffer.EncodeToBase64String(authBuffer));

            HttpResponseMessage response = await client.PostAsync(uri, null);

            return(response);
        }
예제 #6
0
 public static async Task<string> GetFromJwch(string method,string purpose,HttpFormUrlEncodedContent content,bool tokenRequire = false)
 {
     string uri;
     switch (purpose)
     {
         case "Login":
             uri = Login;
             break;
         case "getTimetable":
             uri = getTimetable;
             break;
         case "getScore":
             uri = getScore;
             break;
         case "getExamRoom":
             uri = getExamRoom;
             break;
         case "getBookSearchResult":
             uri = getBookSearchResult;
             break;
         case "getJwchNotice":
             uri = getJwchNotice;
             break;
         case "getGradePoint":
             uri = getGradePoint;
             break;
         case "getEmptyRoom":
             uri = getEmptyRoom;
             break;
         case "getCurrentWeek":
             uri = getCurrentWeek;
             break;
         default:
             uri = "";
             break;
     }
     HttpResponseMessage httpResponse = new HttpResponseMessage();
     string httpResponseBody = "";
     try
     {
         if (method == "post")
         {
             httpResponse = await httpClient.PostAsync(new Uri(uri), content);
         }
         else
         {
             string con = await content.ReadAsStringAsync();
             uri = uri + "?" + con;
             httpResponse = await httpClient.GetAsync(new Uri(uri));
         }
         httpResponse.EnsureSuccessStatusCode();
         httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
         //Check if the return data is correct
         try
         {
             if (tokenRequire)
             {
                 CheckJwch c = JsonConvert.DeserializeObject<CheckJwch>(httpResponseBody);
                 if (c.errMsg != "" && c.errMsg != null)
                 {
                     await ReLogin();
                     return "relogin";
                 }
             }
             return httpResponseBody;
         }
         catch
         {
             return httpResponseBody;
         }
     }
     catch
     {
         NotifyPopup notifyPopup = new NotifyPopup("网络错误");
         notifyPopup.Show();
         return "error";
     }
 }