/// <summary> /// Make a GET request /// </summary> /// <returns><c>Task<Response></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); }
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); }
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); }
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"; } }