Вам нужен буфер для GET без Params? - PullRequest
0 голосов
/ 04 марта 2012

Если я делаю запрос OAuth Access Token для ресурсов стороннего API, который я завернул, например, для получения всех данных о клиентах.

Для этого GET не требуется никаких строк запросов, поскольку я просто запрашиваю данные обратно, но мой вопрос заключается в том, нужно ли мне еще указывать поток запроса (байтовые данные) какого-либо рода или просто предполагать, что ContentLength должен быть опущен и читается как -1 объектом запроса?

например. Мне не нужно беспокоиться о настройке ContentLength или буфера, который я делаю. Мне просто нужно использовать потоковое считыватель, чтобы получить возвращенный .json или что-то еще, что API возвращает мне правильно?

        HttpWebResponse response;
        Stream dataStream; // data returned from the response
        byte[] buffer = null; // data to send in the request body

        // FYI the "data" variable is just an incoming param to my send method, a string if I want to send data in the request (i.e. json, xml, whatever I am sending if needed)
        if (!string.IsNullOrEmpty(data.Trim())) buffer = Encoding.UTF8.GetBytes(data);

        // the resourceUrl variable I'm specifying for example is "ttp://someThirdPartyApi.com/api/v1/cases.json"
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(resourceUrl);

       // I then add an authorization header to the resonse.Headers (not shown here)

        request.ServicePoint.Expect100Continue = false;
        request.PreAuthenticate = true;

        // do we have any data to send in the request -body-??
        if (buffer != null && buffer.Any())
        {
            request.ContentLength = buffer.Length;

            using (Stream stream = request.GetRequestStream())
            {
                stream.Write(buffer, 0, buffer.Length);
                stream.Close();
            }
        }

        // no data to send, just get the data returned in the response using a StreamReader

1 Ответ

0 голосов
/ 04 марта 2012

Если вы на самом деле не публикуете данные, вам не нужно ничего делать с потоком запросов.В зависимости от того, что вы делаете, вы можете даже использовать WebClient и его метод DownloadString () и избежать большого количества дополнительного кода, используемого при использовании низкоуровневого веб-запроса и т. Д.вы теряете некоторый контроль и гибкость, но, возможно, вам это не нужно, если это простой API.

...