Exemple #1
0
        public ResponseBody(int returnCode, string errorMessage, string response, SimpleRESTfulReturn type)
        {
            StringBuilder responseBuilder = new StringBuilder();

            using (JsonWriter writer = new JsonTextWriter(new StringWriter(responseBuilder)))
            {
                writer.Formatting = Formatting.Indented;
                writer.WriteStartObject();
                writer.WritePropertyName("ReturnCode");
                writer.WriteValue(returnCode);
                writer.WritePropertyName("ErrorMessage");
                writer.WriteValue(errorMessage);
                writer.WritePropertyName("Response");
                if (type == SimpleRESTfulReturn.Empty)
                {
                    writer.WriteNull();
                }
                else if (type == SimpleRESTfulReturn.Json)
                {
                    writer.WriteRawValue(response);
                }
                else if (type == SimpleRESTfulReturn.PlainText)
                {
                    writer.WriteValue(response);
                }
                else
                {
                    writer.WriteValue(response);
                }
                writer.WriteEndObject();
                writer.Flush();
            }
            Value = responseBuilder.ToString();
        }
Exemple #2
0
        public bool CheckResponse(string rawResponse, out string apiResponse, out SimpleRESTfulReturn type)
        {
            //XNamespace soap = "http://schemas.xmlsoap.org/soap/envelope/";
            XNamespace ns1 = Namespace; //"http://www.primeton.com/ProjectInfoManService";
            XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";

            #region comments a sample response
            //              string data = @"
            // <soapenv:Envelope
            //     xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"">
            //     <soapenv:Body>
            //         <_tns_:saveContractServiceResponse
            //             xmlns:_tns_=""http://www.primeton.com/ProjectInfoManService"">
            //             <ns1:flag xsi:nil=""true""
            //                 xmlns:ns1=""http://www.primeton.com/ProjectInfoManService""
            //                 xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""/>
            //             <ns1:msg xsi:nil=""error message""
            //                 xmlns:ns1=""http://www.primeton.com/ProjectInfoManService""
            //                 xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""/>
            //         </_tns_:saveContractServiceResponse>
            //     </soapenv:Body>
            // </soapenv:Envelope>
            //             ";
            #endregion

            try
            {
                var envelope = XElement.Parse(rawResponse);
                var flag     = envelope.Descendants(ns1 + "flag")
                               .FirstOrDefault().Attribute(xsi + "nil").Value;
                var msg = envelope.Descendants(ns1 + "msg")
                          .FirstOrDefault().Attribute(xsi + "nil").Value;

                StringBuilder returnJsonBuilder = new StringBuilder();
                using (JsonWriter jwriter = new JsonTextWriter(new StringWriter(returnJsonBuilder)))
                {
                    jwriter.Formatting = Formatting.Indented;
                    jwriter.WriteStartObject();
                    jwriter.WritePropertyName("flag");
                    jwriter.WriteValue(flag);
                    jwriter.WritePropertyName("msg");
                    jwriter.WriteValue(msg);
                    jwriter.WriteEndObject();
                    jwriter.Close();
                }

                type        = SimpleRESTfulReturn.Json;
                apiResponse = returnJsonBuilder.ToString();
                return(true);
            }
            catch (Exception ex) {
                type        = SimpleRESTfulReturn.PlainText;
                apiResponse = ex.ToString() + "\r\n ****** \r\n" + rawResponse;
                return(false);
            }
        }
        public bool CheckResponse(string rawResponse, out string apiResponse, out SimpleRESTfulReturn type)
        {
            XNamespace soap = "http://schemas.xmlsoap.org/soap/envelope/";

            using (var reader = new StringReader(rawResponse))
            {
                XDocument document  = XDocument.Load(reader);
                var       faultNode = (from e in document.Descendants(soap + "Fault")
                                       select e).SingleOrDefault();
                if (faultNode == null)
                {
                    //no fault,
                    var returnNode = (from e in document.Descendants("return")
                                      select e).SingleOrDefault();
                    if (returnNode != null)
                    {
                        type        = SimpleRESTfulReturn.Json;
                        apiResponse = returnNode.Value;
                        return(true);
                    }
                    else
                    {
                        type        = SimpleRESTfulReturn.PlainText;
                        apiResponse = rawResponse;
                        return(false);
                    }
                }
                else
                {
                    type        = SimpleRESTfulReturn.PlainText;
                    apiResponse = $"FaultCode={faultNode.Element("faultcode").Value},"
                                  + $"FaultString={faultNode.Element("faultstring").Value}";
                    return(false);
                }
            }
        }
Exemple #4
0
        public bool CheckResponse(string rawResponse, out string apiResponse, out SimpleRESTfulReturn type)
        {
            type        = ReturnType;
            apiResponse = rawResponse;

            #region 对响应进行正确性检查
            if (SuccessRule == Models.SimpleRESTfulSuccess.NoException)
            {
                return(true);
            }//肯定不是NoException规则了。
            string checkSegment;
            if (SuccessRule == Models.SimpleRESTfulSuccess.JsonPath)
            {
                JObject returnJson = JObject.Parse(rawResponse);
                checkSegment = returnJson.SelectToken(SuccessPath).ToString();
            }
            else
            {
                checkSegment = rawResponse;
            }
            if (string.IsNullOrWhiteSpace(SuccessRegx?.Trim()))
            {
                //没有正则表达式,那么表示可以任意匹配
                return(true);
            }
            RegexOptions regexOptions = IgnoreCase ? RegexOptions.IgnoreCase : RegexOptions.None;
            if (Regex.IsMatch(checkSegment, SuccessRegx, regexOptions))
            {
                return(true);
            }
            else
            {
                return(false);
            }
            #endregion
        }