Пример #1
0
        async Task <T> Request <T>(string path,
                                   HttpMethod method,
                                   Dictionary <string, object> headers = null,
                                   object data = null,
                                   Dictionary <string, object> queryParams = null)
        {
            string url = await BuildUrl(path, queryParams);

            HttpRequestMessage request = new HttpRequestMessage {
                RequestUri = new Uri(url),
                Method     = method,
            };

            await FillHeaders(request.Headers, headers);

            string content = null;

            if (data != null)
            {
                content = JsonConvert.SerializeObject(data);
                StringContent requestContent = new StringContent(content);
                requestContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                request.Content = requestContent;
            }
            LCHttpUtils.PrintRequest(client, request, content);
            HttpResponseMessage response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);

            request.Dispose();

            string resultString = await response.Content.ReadAsStringAsync();

            response.Dispose();
            LCHttpUtils.PrintResponse(response, resultString);

            if (response.IsSuccessStatusCode)
            {
                T ret = JsonConvert.DeserializeObject <T>(resultString,
                                                          LCJsonConverter.Default);
                return(ret);
            }
            throw HandleErrorResponse(response.StatusCode, resultString);
        }
Пример #2
0
        async Task <LCAppServer> FetchAppServer()
        {
            // 判断节点地区
            if (!IsInternalApp(appId))
            {
                // 国内节点必须配置自定义域名
                throw new Exception("Please init with your server url.");
            }
            // 向 App Router 请求地址
            if (appServer == null || !appServer.IsValid)
            {
                try {
                    HttpRequestMessage request = new HttpRequestMessage {
                        RequestUri = new Uri($"https://app-router.com/2/route?appId={appId}"),
                        Method     = HttpMethod.Get
                    };
                    HttpClient client = new HttpClient();
                    LCHttpUtils.PrintRequest(client, request);
                    HttpResponseMessage response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);

                    request.Dispose();

                    string resultString = await response.Content.ReadAsStringAsync();

                    response.Dispose();
                    LCHttpUtils.PrintResponse(response, resultString);

                    Dictionary <string, object> data = JsonConvert.DeserializeObject <Dictionary <string, object> >(resultString);
                    appServer = new LCAppServer(data);
                } catch (Exception e) {
                    LCLogger.Error(e);
                    // 拉取服务地址失败后,使用国际节点的默认服务地址
                    appServer = LCAppServer.GetInternalFallbackAppServer(appId);
                }
            }
            return(appServer);
        }