/// <summary> /// WebClient Logic - Communicates to and from Trakt /// </summary> /// <param name="address">The URI to use</param> /// <param name="data">The Data to Send</param> /// <returns>The response from Trakt</returns> private static string Transmit(string address, string data) { // address.Replace(" ", ""); if (OnDataSend != null) { OnDataSend(address, data); } try { ServicePointManager.Expect100Continue = false; WebClient client = new WebClient(); client.Encoding = Encoding.UTF8; client.Headers.Add("user-agent", TrakttvAPI.UserAgent); // wait for a response from the server string response = client.UploadString(address, data); // received data, pass it back if (OnDataReceived != null) { OnDataReceived(response); } return(response); } catch (WebException e) { if (OnDataError != null) { OnDataError(e.Message); } if (e.Status == WebExceptionStatus.ProtocolError) { var response = ((HttpWebResponse)e.Response); try { using (var stream = response.GetResponseStream()) { using (var reader = new StreamReader(stream)) { return(reader.ReadToEnd()); } } } catch { } } // create a proper response object TraktResponse error = new TraktResponse { Status = "failure", Error = e.Message }; // not using at moment // throw new TraktException(error.Message); return(error.ToJSON()); } }