Пример #1
0
    /// <summary>
    /// 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)
    {
      if (OnDataSend != null) OnDataSend(address, data);

      try
      {
        ServicePointManager.Expect100Continue = false;
        WebClient client = new CompressionWebClient(true) { Encoding = Encoding.UTF8 };
        client.Headers.Add("user-agent", 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
        };
        return error.ToJSON();
      }
    }