Member 14779968 Ответов: 1

Как я могу вернуть httpwebresponse в моем методе sendrequest, чтобы я мог вернуть свой вызов GET и POST также как httpwebresponse?


Currently мой метод send request возвращает строку, но я хотел бы знать, как я могу сделать так, чтобы он возвращал HttpWebResponse, чтобы я мог получить ответ в моих вызовах GET, POST как Json

Вот мой метод sendrequest сценарию

 public class RestClient{

private static string JSON_ERROR = "error";

private string SendRequest(HttpWebRequest request, string queryParams, string token)
        {
            HttpWebResponse response = null;
            if(token != null)
            {
                request.Headers.Add("Authorization", "Bearer " + token);

            }

            request.ContentType = "application/json";
            
            try
            {
                
                response = (HttpWebResponse)request.GetResponse();
                
            }
            catch (WebException wex)
            {
                if (wex.Response == null)
                return JSON_ERROR;

                using (var errorResponse = (HttpWebResponse)wex.Response)
                {
                    using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                    {
                        return reader.ReadToEnd(); //expected error from JSON
                    }
                }
            }

            var responseVal = new StreamReader(stream: response.GetResponseStream()).ReadToEnd();

            return responseVal;
        }


}

Here is my GET and POST methods

 public string IsGet(string baseURL, string basePath, string queryParams, string token)
        {
            var request = (HttpWebRequest)WebRequest.Create(baseURL+basePath+queryParams);
            request.Method = "GET";
           return SendRequest(request, queryParams, token);
        }


        public string IsPost(string baseURL, string basePath, string queryParams, string json, string token)
        {
            var request = (HttpWebRequest)WebRequest.Create(baseURL+basePath+queryParams);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.Headers.Add("Authorization", "Bearer " + token);
            byte[] postBytes = Encoding.ASCII.GetBytes(json);
            request.ContentLength = postBytes.Length;
            var requestStream = request.GetRequestStream();
            requestStream.Write(postBytes, 0, postBytes.Length);
            requestStream.Close();

            return SendRequest(request, queryParams, token);
        }


Что я уже пробовал:

Я попробовал следующее решение, но когда я пытаюсь получить свой ответ в моем GET или POST вызове, он равен нулю.



private HttpWebResponse SendRequest(HttpWebRequest request, string queryParams, string token)
      {
          HttpWebResponse response = null;
          if(token != null)
          {
              request.Headers.Add("Authorization", "Bearer " + token);

          }

          request.ContentType = "application/json";

          try
          {

              response = (HttpWebResponse)request.GetResponse();

          }
          catch (WebException wex)
          {
              if (wex.Response == null)
              //return JSON_ERROR;

              using (var errorResponse = (HttpWebResponse)wex.Response)
              {
                  using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                  {
                      //return reader.ReadToEnd(); //expected error from JSON
                  }
              }
          }

                             //response.GetResponseStream();
          var responseVal = new StreamReader(stream: response.GetResponseStream()).ReadToEnd();
           var json =  JsonConvert.DeserializeObject(responseVal);

          return json;
      }

1 Ответов

Рейтинг:
1

Garth J Lancaster

Не уверен, что я полностью понимаю "почему", но, как сформулирован ваш вопрос, если это так, как у вас есть, он возвращает строку

private string SendRequest(HttpWebRequest request, string queryParams, string token)
    {
        ...
        return someString;
    }


после этого
private HttpWebResponse SendRequest(HttpWebRequest request, string queryParams, string token)
    {
        HttpWebResponse response
        ...
        return response;
    }


делает то, о чем вы просили.... если это не то, что вы хотите, пожалуйста, измените свой первоначальный вопрос, пожалуйста, не публикуйте свои ответы в разделе "Решения".


Member 14779968

Спасибо Гарту. Я думаю, что моя главная проблема состояла в том, чтобы преобразовать ответ в Json при возврате HttpWebResponse. Вот главная проблема, с которой я столкнулся, пытаясь преобразовать HttpWebReponse в Json. Я открыл в другом вопросе https://www.codeproject.com/Questions/5268409/How-to-convert-the-response-to-json-using-httpwebr