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(); }
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); } } }
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 }