Ejemplo n.º 1
0
        public AuthorizationToken getToken(String code)
        {
            APIId apiId = new APIId();

            apiId.Name           = "getToken";
            apiId.NamespaceValue = "system.oauth2";
            apiId.Version        = 1;

            Request request = new Request();

            request.ApiId = apiId;

            request.AddtionalParams["code"]               = code;
            request.AddtionalParams["grant_type"]         = "authorization_code";
            request.AddtionalParams["need_refresh_token"] = true;
            request.AddtionalParams["client_id"]          = clientPolicy.AppKey;
            request.AddtionalParams["client_secret"]      = clientPolicy.SecretKey;
            request.AddtionalParams["redirect_uri"]       = "default";
            RequestPolicy oauthPolicy = new RequestPolicy();

            oauthPolicy.HttpMethod = "GET";
            oauthPolicy.UseHttps   = true;

            return(this.send <AuthorizationToken>(request, oauthPolicy));
        }
Ejemplo n.º 2
0
        private String buildRequestUri(RequestPolicy requestPolicy, Request request)
        {
            String schema = "http";
            int    port   = clientPolicy.HttpPort;

            if (requestPolicy.UseHttps)
            {
                schema = "https";
                port   = clientPolicy.HttpsPort;
            }
            StringBuilder relativeBuilder = new StringBuilder(schema);

            relativeBuilder.Append("://");
            relativeBuilder.Append(clientPolicy.ServerHost);
            if (port != 80 && port != 443)
            {
                relativeBuilder.Append(":");
                relativeBuilder.Append(port);
            }

            if (requestPolicy.AccessPrivateApi)
            {
                relativeBuilder.Append("/api");
            }
            else
            {
                relativeBuilder.Append("/openapi");
            }

            relativeBuilder.Append("/");
            relativeBuilder.Append(createProtocolRequestPath(requestPolicy, request));
            return(relativeBuilder.ToString());
        }
Ejemplo n.º 3
0
        private Dictionary <String, Object> createParameterDictionary(RequestPolicy requestPolicy, Request request)
        {
            Serializer serializer = SerializerProvider.getInstance().getSerializer(requestPolicy.RequestProtocol);

            Dictionary <String, Object> parameters = serializer.serialize(request.RequestEntity);

            if (!requestPolicy.RequestProtocol.Equals(requestPolicy.ResponseProtocol))
            {
                parameters.Add("_aop_responseFormat", requestPolicy.ResponseProtocol);
            }
            if (requestPolicy.RequestSendTimestamp)
            {
                parameters.Add("_aop_timestamp", DateUtil.currentTimeMillis());
            }
            parameters.Add("_aop_datePattern", DateUtil.getDatePattern());
            foreach (KeyValuePair <string, object> kvp in request.AddtionalParams)
            {
                parameters.Add(kvp.Key, kvp.Value);
            }
            if (request.AccessToken != null)
            {
                parameters.Add("access_token", request.AccessToken);
            }
            return(parameters);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Refreshs the token.
        /// </summary>
        /// <returns>The token.</returns>
        /// <param name="refreshToken">Refresh token.</param>
        public AuthorizationToken refreshToken(String refreshToken)
        {
            // https://gw.open.1688.com/openapi/param2/1/system.oauth2/getToken/YOUR_APPKEY
            APIId apiId = new APIId();

            apiId.Name           = "getToken";
            apiId.NamespaceValue = "system.oauth2";
            apiId.Version        = 1;

            Request request = new Request();

            request.ApiId = apiId;

            request.AddtionalParams["refreshToken"]  = refreshToken;
            request.AddtionalParams["grant_type"]    = "refresh_token";
            request.AddtionalParams["client_id"]     = clientPolicy.AppKey;
            request.AddtionalParams["client_secret"] = clientPolicy.SecretKey;
            request.AddtionalParams["redirect_uri"]  = "default";

            RequestPolicy oauthPolicy = new RequestPolicy();

            oauthPolicy.UseHttps = true;

            return(this.send <AuthorizationToken>(request, oauthPolicy));
        }
Ejemplo n.º 5
0
        public T send <T>(Request request, RequestPolicy policy)
        {
            HttpClient httpClient = new HttpClient(clientPolicy);
            T          result     = httpClient.request <T>(request, policy);

            return(result);
        }
Ejemplo n.º 6
0
        public JsonResult GetEditPolicy(Guid id)
        {
            RequestPolicy model = null;

            CommunicateManager.Invoke <IConsoLocalPolicyService>(p => model = p.EditFind(id));
            return(Json(model, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 7
0
        private T Send <T>(Request request, RequestPolicy policy)
        {
            HttpClient httpClient = new HttpClient(clientPolicy);
            string     jsonResult = httpClient.GetRequestResult(request, policy);
            T          t          = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(jsonResult);

            return(t);
        }
Ejemplo n.º 8
0
 public gdwgoodsattrlit()
 {
     OceanApiId = new APIId();
     OceanApiId.NamespaceValue        = "method";
     OceanApiId.Name                  = "dsc.goods.attr.list.get";
     OceanApiId.Version               = 1;
     RequestPolicyInstance            = new RequestPolicy();
     RequestPolicyInstance.UseHttps   = false;
     RequestPolicyInstance.HttpMethod = "GET";
 }
Ejemplo n.º 9
0
        public RefreshTokenRequest()
        {
            OceanApiId                = new APIId();
            OceanApiId.Name           = "getToken";
            OceanApiId.NamespaceValue = "system.oauth2";
            OceanApiId.Version        = 1;

            RequestPolicyInstance          = new RequestPolicy();
            RequestPolicyInstance.UseHttps = true;
        }
Ejemplo n.º 10
0
 private void signature(String path, Dictionary <String, Object> parameters, RequestPolicy requestPolicy, ClientPolicy clientPolicy)
 {
     if (!requestPolicy.UseSignture)
     {
         return;
     }
     if (clientPolicy.AppKey == null)
     {
         return;
     }
 }
Ejemplo n.º 11
0
        private StringBuilder createProtocolRequestPath(RequestPolicy requestPolicy, Request request)
        {
            StringBuilder relativeBuilder = new StringBuilder();

            relativeBuilder.Append(requestPolicy.RequestProtocol);
            relativeBuilder.Append("/").Append(request.ApiId.Version);
            relativeBuilder.Append("/").Append(request.ApiId.NamespaceValue);
            relativeBuilder.Append("/").Append(request.ApiId.Name);
            relativeBuilder.Append("/").Append(clientPolicy.AppKey);
            return(relativeBuilder);
        }
Ejemplo n.º 12
0
 public Attribute()
 {
     OceanApiId = new APIId();
     OceanApiId.NamespaceValue        = "method";
     OceanApiId.Name                  = "dsc.attribute.insert.post";
     OceanApiId.Strtypename           = "format";
     OceanApiId.Strtypevalue          = "json";
     OceanApiId.Version               = 1;
     RequestPolicyInstance            = new RequestPolicy();
     RequestPolicyInstance.UseHttps   = false;
     RequestPolicyInstance.HttpMethod = "POST";
 }
Ejemplo n.º 13
0
Archivo: Image.cs Proyecto: wpclyy/wpc
 public Image()
 {
     OceanApiId = new APIId();
     OceanApiId.NamespaceValue        = "method";
     OceanApiId.Name                  = "dsc.goods.image.insert.post";
     OceanApiId.Strtypename           = "type";
     OceanApiId.Strtypevalue          = "goods_img";
     OceanApiId.Version               = 1;
     RequestPolicyInstance            = new RequestPolicy();
     RequestPolicyInstance.UseHttps   = false;
     RequestPolicyInstance.HttpMethod = "POST";
 }
        public IActionResult PolicyHandl(int ID)
        {
            RequestPolicy request = new RequestPolicy()
            {
                PolicyID = ID,
                UserID   = (int)HttpContext.Session.GetInt32("IDSession"),
            };

            context.RequestPolicies.Add(request);
            context.SaveChanges();
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 15
0
 public Attributeupdate(string attr_id)
 {
     OceanApiId = new APIId();
     OceanApiId.NamespaceValue        = "method";
     OceanApiId.Name                  = "dsc.attribute.update.post";
     OceanApiId.Strtypename           = "format";
     OceanApiId.Strtypevalue          = "json";
     OceanApiId.Version               = 1;
     OceanApiId.Filedname             = "attr_id";
     OceanApiId.Filedvalue            = attr_id;
     RequestPolicyInstance            = new RequestPolicy();
     RequestPolicyInstance.UseHttps   = false;
     RequestPolicyInstance.HttpMethod = "POST";
 }
Ejemplo n.º 16
0
 public Goodupdate(String goodid)
 {
     OceanApiId = new APIId();
     OceanApiId.NamespaceValue        = "method";
     OceanApiId.Name                  = "dsc.goods.update.post";
     OceanApiId.Strtypename           = "format";
     OceanApiId.Strtypevalue          = "json";
     OceanApiId.Version               = 1;
     OceanApiId.Filedname             = "goods_id";
     OceanApiId.Filedvalue            = goodid;
     RequestPolicyInstance            = new RequestPolicy();
     RequestPolicyInstance.UseHttps   = false;
     RequestPolicyInstance.HttpMethod = "POST";
 }
Ejemplo n.º 17
0
        public Res execute <Res>(GatewayAPIRequest gatewayAPIRequest, String accessToken)
        {
            HttpClient    httpClient = new HttpClient(clientPolicy);
            RequestPolicy policy     = new RequestPolicy();

            policy.UseHttps = true;
            Request request = new Request();

            request.ApiId         = gatewayAPIRequest.ApiId;
            request.RequestEntity = gatewayAPIRequest;
            request.AccessToken   = accessToken;
            Res result = httpClient.request <Res>(request, policy);

            return(result);
        }
Ejemplo n.º 18
0
        public virtual async Task <PushQueryMessageListResult> PushQueryMessageList()
        {
            CurrentUnitOfWork.DisableFilter(AbpDataFilters.SoftDelete);
            AccessToken token = await this.Repository.GetAsync(6526667356666593280);

            SyncAPIClient             client = new SyncAPIClient(token.App_Key, token.App_Secret);
            PushQueryMessageListParam param
                = new PushQueryMessageListParam();
            RequestPolicy oauthPolicy = new RequestPolicy();

            oauthPolicy.UseHttps = true;

            PushQueryMessageListResult response = client.execute <PushQueryMessageListResult>(param, token.Access_Token);

            return(null);
        }
Ejemplo n.º 19
0
        // Testing Method
        public void GetSellerTradeView()
        {
            SyncAPIClient client = new SyncAPIClient("3259943", "t6MpyARzzv");
            AlibabaTradeGetSellerOrderListParam param = new AlibabaTradeGetSellerOrderListParam();

            string accessToken = "aa200987-fcec-48d9-9521-967d3ce2eea2";

            RequestPolicy oauthPolicy = new RequestPolicy();

            oauthPolicy.UseHttps = true;

            AlibabaTradeGetSellerOrderListResult result =
                client.execute <AlibabaTradeGetSellerOrderListResult>(param, accessToken);

            Console.Write(result.getTotalRecord());
        }
Ejemplo n.º 20
0
        private StringBuilder createProtocolRequestPath(RequestPolicy requestPolicy, Request request)
        {
            StringBuilder relativeBuilder = new StringBuilder();

            relativeBuilder.Append("app_key");
            relativeBuilder.Append("=").Append(clientPolicy.AppKey);
            relativeBuilder.Append("&").Append(request.OceanApiId.NamespaceValue);
            relativeBuilder.Append("=").Append(request.OceanApiId.Name);
            relativeBuilder.Append("&").Append(request.OceanApiId.Strtypename);
            relativeBuilder.Append("=").Append(request.OceanApiId.Strtypevalue);
            if (request.OceanApiId.Filedname != "" && request.OceanApiId.Filedvalue != "")
            {
                relativeBuilder.Append("&").Append(request.OceanApiId.Filedname);
                relativeBuilder.Append("=").Append(request.OceanApiId.Filedvalue);
            }
            return(relativeBuilder);
        }
Ejemplo n.º 21
0
        public IList <AlibabaOpenplatformTradeModelTradeInfo> GetModificationTradeInfos(
            IAccessToken token,
            DateTime modifyStart,
            DateTime modifyEnd)
        {
            string        accessToken = token.Access_Token;
            SyncAPIClient client      = new SyncAPIClient(token.App_Key, token.App_Secret);
            int           maxPageSize = 20; // Alibaba only support 20
            int           currentPage = 1;
            long          totalCount  = 0;
            // Save all trade into this collection.
            IList <AlibabaOpenplatformTradeModelTradeInfo> data
                = new List <AlibabaOpenplatformTradeModelTradeInfo>();

            // 先计算一次,拿到总数后,再做循环处理
            do
            {
                Console.WriteLine("Page " + currentPage.ToString());
                AlibabaTradeGetSellerOrderListParam param
                    = new AlibabaTradeGetSellerOrderListParam();
                // 设置查询条件,查询前一在的数据
                param.setModifyStartTime(modifyStart);
                param.setModifyEndTime(modifyEnd);
                // 分页计算
                param.setPageSize(maxPageSize);
                param.setPage(currentPage);
                RequestPolicy oauthPolicy = new RequestPolicy();
                oauthPolicy.UseHttps = true;
                AlibabaTradeGetSellerOrderListResult result =
                    client.execute <AlibabaTradeGetSellerOrderListResult>(param, accessToken);
                totalCount = result.getTotalRecord().Value;
                AlibabaOpenplatformTradeModelTradeInfo[] orders = result.getResult();
                foreach (var ord in orders)
                {
                    data.Add(ord);
                }
                currentPage++;
            }while (currentPage * 1.0 <= (totalCount * 1.0 / maxPageSize)); // 没有超出分页,继续执行

            Console.WriteLine("Alibaba Order Count : " + data.Count);
            Console.WriteLine("Pull Order Count : " + data.Count);
            return(data);
        }
Ejemplo n.º 22
0
        private void signature(String path, Dictionary <String, Object> parameters, RequestPolicy requestPolicy, ClientPolicy clientPolicy)
        {
            if (!requestPolicy.UseSignture)
            {
                return;
            }
            if (clientPolicy.AppKey == null ||
                clientPolicy.SecretKey == null)
            {
                return;
            }
            byte[] sign    = SignatureUtil.hmacSha1(path, parameters, clientPolicy.SecretKey);
            String signStr = SignatureUtil.toHex(sign);

            if (signStr != null)
            {
                parameters.Add("_aop_signature", signStr);
            }
        }
Ejemplo n.º 23
0
        private Dictionary <String, Object> createParameterDictionary(RequestPolicy requestPolicy, Request request, String accessToken)
        {
            Serializer serializer = SerializerProvider.getInstance().getSerializer(requestPolicy.RequestProtocol);

            Dictionary <String, Object> parameters = serializer.serialize(request);

            //if (!requestPolicy.RequestProtocol.Equals(requestPolicy.ResponseProtocol))
            //{
            //    parameters.Add("_aop_responseFormat", requestPolicy.ResponseProtocol);
            //}
            //if (requestPolicy.RequestSendTimestamp)
            //{
            //    parameters.Add("_aop_timestamp", DateUtil.currentTimeMillis());
            //}
            //parameters.Add("_aop_datePattern", DateUtil.getDatePattern());
            //if (accessToken != null)
            //{
            //    parameters.Add("access_token", accessToken);
            //}
            return(parameters);
        }
Ejemplo n.º 24
0
        public ApiResult GetAttributeInfo(long categoryID = 0)
        {
            APIId apiId = new APIId();

            apiId.Name           = "alibaba.category.attribute.get";
            apiId.NamespaceValue = "com.alibaba.product";
            apiId.Version        = 1;

            Request request = new Request();

            request.ApiId = apiId;

            request.AddtionalParams["categoryID"] = categoryID;
            request.AddtionalParams["webSite"]    = 1688;
            RequestPolicy oauthPolicy = new RequestPolicy();

            oauthPolicy.HttpMethod = "GET";
            oauthPolicy.UseHttps   = true;

            return(Send <ApiResult>(request, oauthPolicy));
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Gets the token.
        /// </summary>
        /// <returns>The token.</returns>
        /// <param name="code">Code.</param>
        public AuthorizationToken getToken(String code)
        {
            // https://gw.open.1688.com/openapi/http/1/system.oauth2/getToken/YOUR_APPKEY

            /*
             *  ?grant_type = authorization_code
             *  &need_refresh_token=true
             *  &client_id= YOUR_APPKEY
             *  &client_secret= YOUR_APPSECRET
             *  &redirect_uri=YOUR_REDIRECT_URI
             *  &code=CODE
             */
            APIId apiId = new APIId();

            apiId.Name           = "getToken";
            apiId.NamespaceValue = "system.oauth2";
            apiId.Version        = 1;

            Request request = new Request();

            request.ApiId = apiId;

            request.AddtionalParams["code"]               = code;
            request.AddtionalParams["grant_type"]         = "authorization_code";
            request.AddtionalParams["need_refresh_token"] = true;
            request.AddtionalParams["client_id"]          = clientPolicy.AppKey;
            request.AddtionalParams["client_secret"]      = clientPolicy.SecretKey;
            request.AddtionalParams["redirect_uri"]       = "default";

            RequestPolicy oauthPolicy = new RequestPolicy();

            oauthPolicy.HttpMethod           = "POST";
            oauthPolicy.UseHttps             = true;
            oauthPolicy.RequestSendTimestamp = false;
            oauthPolicy.RequestProtocol      = Protocol.http;
            oauthPolicy.ResponseProtocol     = Protocol.json2;

            return(this.send <AuthorizationToken>(request, oauthPolicy));
        }
Ejemplo n.º 26
0
        public ExampleFamilyPostResult exampleFamilyPost(ExampleFamilyPostParam param, string accessToken)
        {
            RequestPolicy reqPolicy = new RequestPolicy();

            reqPolicy.HttpMethod           = "POST";
            reqPolicy.NeedAuthorization    = true;
            reqPolicy.RequestSendTimestamp = false;
            reqPolicy.UseHttps             = false;
            reqPolicy.UseSignture          = true;
            reqPolicy.AccessPrivateApi     = false;

            Request request = new Request();
            APIId   apiId   = new APIId();

            apiId.Name           = "example.family.post";
            apiId.NamespaceValue = "api.example";
            apiId.Version        = 1;
            request.ApiId        = apiId;

            request.RequestEntity = param;
            request.AccessToken   = accessToken;
            return(this.getAPIClient().send <ExampleFamilyPostResult>(request, reqPolicy));
        }
Ejemplo n.º 27
0
        /// <summary>
        /// Refreshs the refresh token.
        /// </summary>
        /// <returns>The refresh token.</returns>
        /// <param name="refreshToken">Refresh token.</param>
        public AuthorizationToken refreshRefreshToken(string accessToken, string refreshToken)
        {
            // https://gw.open.1688.com/openapi/param2/1/system.oauth2/postponeToken/YOUR_APPKEY
            APIId apiId = new APIId();

            apiId.Name           = "postponeToken";
            apiId.NamespaceValue = "system.oauth2";
            apiId.Version        = 1;

            Request request = new Request();

            request.ApiId = apiId;
            request.AddtionalParams["client_id"]     = clientPolicy.AppKey;
            request.AddtionalParams["client_secret"] = clientPolicy.SecretKey;
            request.AddtionalParams["refresh_token"] = refreshToken;
            request.AddtionalParams["access_token"]  = accessToken;

            RequestPolicy oauthPolicy = new RequestPolicy();

            oauthPolicy.UseHttps = true;

            return(this.send <AuthorizationToken>(request, oauthPolicy));
        }
Ejemplo n.º 28
0
        public AlibabaOpenplatformTradeModelTradeInfo GetTradeInfor(string appKey, string memberId, long orderId)
        {
            var token = accessTokenRepository.Single(
                t => t.App_Key == appKey &&
                t.MemberId == memberId &&
                t.IsActive == true &&
                t.IsDeleted == false);

            SyncAPIClient client = new SyncAPIClient(token.App_Key, token.App_Secret);
            // SyncAPIClient client = new SyncAPIClient("3259943", "t6MpyARzzv");

            AlibabaTradeGetSellerViewParam param
                = new AlibabaTradeGetSellerViewParam();
            RequestPolicy oauthPolicy = new RequestPolicy();

            oauthPolicy.UseHttps = true;

            param.setOrderId(orderId);

            AlibabaTradeGetSellerViewResult response = client.execute <AlibabaTradeGetSellerViewResult>(param, token.Access_Token);

            return(response.getResult());
        }
Ejemplo n.º 29
0
        /// <summary>
        /// 上传执行 方法
        /// </summary>
        /// <param name="parameter">上传文件请求参数</param>
        public string Execute(UploadParameterType parameter, Request request, RequestPolicy requestPolicy)
        {
            StringBuilder path = createProtocolRequestPath(requestPolicy, request);
            Dictionary <String, Object> parameters = createParameterDictionary(requestPolicy, request, "");
            StringBuilder queryBuilder             = new StringBuilder();

            signature(path.ToString(), parameters, requestPolicy, clientPolicy);
            String queryString = createParameterStr_double(parameters);
            String uriStr      = buildRequestUri(requestPolicy, request);

            uriStr = uriStr + "&" + queryString;
            using (MemoryStream memoryStream = new MemoryStream())
            {
                // 1.分界线
                string boundary           = string.Format("----{0}", DateTime.Now.Ticks.ToString("x")), // 分界线可以自定义参数
                       beginBoundary      = string.Format("--{0}\r\n", boundary),
                       endBoundary        = string.Format("\r\n--{0}--\r\n", boundary);
                byte[] beginBoundaryBytes = parameter.Encoding.GetBytes(beginBoundary), endBoundaryBytes = parameter.Encoding.GetBytes(endBoundary);
                // 2.组装开始分界线数据体 到内存流中
                memoryStream.Write(beginBoundaryBytes, 0, beginBoundaryBytes.Length);
                // 3.组装 上传文件附加携带的参数 到内存流中
                //if (parameter.PostParameters != null && parameter.PostParameters.Count > 0)
                //{
                //    foreach (string[] keyValuePair in parameter.PostParameters)
                //    {
                //        string parameterHeaderTemplate = string.Format("Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}\r\n{2}", keyValuePair[0], keyValuePair[1], beginBoundary);
                //        byte[] parameterHeaderBytes = parameter.Encoding.GetBytes(parameterHeaderTemplate);
                //        memoryStream.Write(parameterHeaderBytes, 0, parameterHeaderBytes.Length);application/octet-stream
                //    }
                //}
                // 4.组装文件头数据体 到内存流中
                string fileHeaderTemplate = string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: image/jpeg\r\n\r\n", parameter.FileNameKey, parameter.FileNameValue);
                byte[] fileHeaderBytes    = parameter.Encoding.GetBytes(fileHeaderTemplate);
                memoryStream.Write(fileHeaderBytes, 0, fileHeaderBytes.Length);
                // 5.组装文件流 到内存流中
                byte[] buffer = new byte[1024 * 1024 * 1];

                Stream ss = parameter.UploadStream;
                if (ss != null)
                {
                    ss.Seek(0, SeekOrigin.Begin);

                    int size = ss.Read(buffer, 0, buffer.Length);
                    while (size > 0)
                    {
                        memoryStream.Write(buffer, 0, size);
                        size = parameter.UploadStream.Read(buffer, 0, buffer.Length);
                    }
                    ss.Dispose();
                }
                // 6.组装结束分界线数据体 到内存流中
                memoryStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
                // 7.获取二进制数据
                byte[] postBytes = memoryStream.ToArray();


                // 8.HttpWebRequest 组装
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(uriStr, UriKind.RelativeOrAbsolute));
                webRequest.Method        = "POST";
                webRequest.Timeout       = 100000;
                webRequest.ContentType   = string.Format("multipart/form-data; boundary={0}", boundary);
                webRequest.ContentLength = postBytes.Length;
                if (Regex.IsMatch(uriStr, "^https://"))
                {
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
                    ServicePointManager.ServerCertificateValidationCallback = CheckValidationResult;
                }
                // 9.写入上传请求数据
                using (Stream requestStream = webRequest.GetRequestStream())
                {
                    requestStream.Write(postBytes, 0, postBytes.Length);
                }


                // 10.获取响应
                using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
                {
                    using (StreamReader reader = new StreamReader(webResponse.GetResponseStream(), parameter.Encoding))
                    {
                        string body = reader.ReadToEnd();
                        reader.Dispose();
                        reader.Close();
                        return(body);
                    }
                }
            }
        }
Ejemplo n.º 30
0
        public T request <T>(Request request, RequestPolicy requestPolicy)
        {
            StringBuilder path = createProtocolRequestPath(requestPolicy, request);
            Dictionary <String, Object> parameters = createParameterDictionary(requestPolicy, request);
            StringBuilder queryBuilder             = new StringBuilder();

            signature(path.ToString(), parameters, requestPolicy, clientPolicy);
            if ("GET".Equals(requestPolicy.HttpMethod))
            {
                String queryString = createParameterStr(parameters);
                String uriStr      = buildRequestUri(requestPolicy, request);
                uriStr = uriStr + "?" + queryString;
                Uri            uri            = new Uri(uriStr);
                HttpWebRequest httpWebRequest = WebRequest.Create(uri) as HttpWebRequest;

                httpWebRequest.Method            = "GET";
                httpWebRequest.KeepAlive         = false;
                httpWebRequest.AllowAutoRedirect = true;
                httpWebRequest.ContentType       = "application/x-www-form-urlencoded";
                httpWebRequest.UserAgent         = "Ocean/NET-SDKClient";

                HttpWebResponse response       = httpWebRequest.GetResponse() as HttpWebResponse;
                Stream          responseStream = response.GetResponseStream();

                StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
                string       a            = streamReader.ReadToEnd();

                DeSerializer    deSerializer = SerializerProvider.getInstance().getDeSerializer(requestPolicy.ResponseProtocol);
                ResponseWrapper rw           = deSerializer.deSerialize(responseStream, typeof(T), Encoding.UTF8.EncodingName);
                return((T)rw.Result);
            }
            else
            {
                String         postString     = createParameterStr(parameters);
                byte[]         postData       = Encoding.UTF8.GetBytes(postString);
                String         uriStr         = buildRequestUri(requestPolicy, request);
                Uri            uri            = new Uri(uriStr);
                HttpWebRequest httpWebRequest = WebRequest.Create(uri) as HttpWebRequest;

                httpWebRequest.Method            = "POST";
                httpWebRequest.KeepAlive         = false;
                httpWebRequest.AllowAutoRedirect = true;
                httpWebRequest.ContentType       = "application/x-www-form-urlencoded";
                httpWebRequest.UserAgent         = "Ocean/NET-SDKClient";
                httpWebRequest.ContentLength     = postData.Length;

                System.IO.Stream outputStream = httpWebRequest.GetRequestStream();
                outputStream.Write(postData, 0, postData.Length);
                outputStream.Close();
                try
                {
                    HttpWebResponse response       = httpWebRequest.GetResponse() as HttpWebResponse;
                    Stream          responseStream = response.GetResponseStream();


                    DeSerializer    deSerializer = SerializerProvider.getInstance().getDeSerializer(requestPolicy.ResponseProtocol);
                    ResponseWrapper rw           = deSerializer.deSerialize(responseStream, typeof(T), Encoding.UTF8.EncodingName);
                    return((T)rw.Result);
                }
                catch (System.Net.WebException webException)
                {
                    HttpWebResponse response       = webException.Response as HttpWebResponse;
                    Stream          responseStream = response.GetResponseStream();
                    DeSerializer    deSerializer   = SerializerProvider.getInstance().getDeSerializer(requestPolicy.ResponseProtocol);
                    Exception       rw             = deSerializer.buildException(responseStream, 500, Encoding.UTF8.EncodingName);
                    throw rw;
                }
            }
        }