/// <summary> /// Parses an InSites success HTTP response, and finds the ID of a newly created equipment resource. The response format must be XML. /// </summary> /// <param name="success">An <c>ApiResponse</c> representing an InSites XML response. The type of response required is one generated by the API call: POST /api/2.0/rest/equipment.xml.</param> /// <returns>The ID of the created equipment.</returns> public static string ParseEquipmentIdFromXMLResponse(APIResponse response) { byte[] bytes = Encoding.ASCII.GetBytes(response.ResponseData); XmlTextReader reader = new XmlTextReader(new MemoryStream(bytes)); try { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (reader.Name == "value") { return reader.GetAttribute("id"); } } } } catch (Exception e) { throw new Exception("Equipment ID not found", e); } finally { reader.Close(); } throw new Exception("Equipment ID not found"); }
private APIResponse GetResponse(HttpWebResponse webResponse) { APIResponse response = new APIResponse(); try { if (webResponse.GetResponseHeader("Set-Cookie").Length > 0) { this.sessionCookie = webResponse.GetResponseHeader("Set-Cookie"); } response.Code = webResponse.StatusCode; Stream responseStream = webResponse.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream); response.ResponseData = streamReader.ReadToEnd(); streamReader.Close(); webResponse.Close(); } catch (WebException exception) { response.Code = HttpStatusCode.BadRequest; response.ResponseData = exception.Message; } catch (Exception exception) { response.Code = HttpStatusCode.InternalServerError; response.ResponseData = exception.Message; } return response; }
private APIResponse Execute(HttpWebRequest webRequest) { APIResponse response = new APIResponse(); try { HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); response = GetResponse(webResponse); } catch (WebException webException) { response = GetResponse((HttpWebResponse)webException.Response); } return response; }