Эквивалент Zend_Http_Client() в C#

#c# #php #asp.net #zend-framework

#c# #php #asp.net #zend-framework

Вопрос:

Я нашел эту серверную часть Google Analytics и пытался преобразовать ее в код C #. Все идет хорошо, но я не уверен, каким был бы Zend_Http_Client в терминах .net.

Я использую приведенный здесь код в качестве ссылки http://code.google.com/p/serversidegoogleanalytics / который был построен на PHP с помощью Zend Framework (я полагаю).

Вот два метода

     public function getHttpClient () {
        if(!$this->httpClient instanceof Zend_Http_Client) {
            include_once("Zend/Http/Client.php");
            $this->httpClient = new Zend_Http_Client();
            $this->httpClient->setConfig(array(
                'maxredirects' => 1,
                'timeout'      => 4
            ));
            $this->httpClient->setHeaders('Referer', "http://" . self::$trackingDomain . "/");
            $this->httpClient->setHeaders("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)");
            $this->httpClient->setCookieJar();
        }
        return $this->httpClient;
    }
  

и это

     private function requestHttp($url, $getParams = array())
    {
        $client = $this->getHttpClient();
        $client->setUri($url);
        $client->setParameterGet($getParams);
        $response = $client->request();

        if ($response->isSuccessful())
            return true;
        else
            return false;
    }
  

Меня больше всего беспокоят setCokieJar(), MaxRedirects и тайм-ауты, setParameterGet(), setURI() и request()

Итак, каков эквивалент .net? Веб-клиент? HttpWebResponse? HttpWebRequest? или это что-то другое?

Любая помощь будет высоко оценена.

Ответ №1:

Я уже использовал System.Net.WebClient и System.Net.WebRequest с некоторым успехом раньше (я полагаю, что WebResponse это просто аналог WebRequest ). WebClient проще в использовании, но предлагает меньше возможностей.

Комментарии:

1. Есть ли какие-нибудь успехи с добавлением дополнительных параметров с помощью setParameterGet() в классе Zend. Мне нужно было бы отправить аналитическую информацию Google, вот почему я спрашиваю.

2. @Bombcode — Какие дополнительные параметры? Строка запроса? Форма? Файлы cookie? Заголовки HTTP?

3. GET запросы выполняются так же просто, как привязка содержимого к URL. Я полагаю, что для POST запроса (кто-нибудь, поправьте меня, если я ошибаюсь) вы бы использовали UploadString и установили строку в качестве желаемой строки запроса. (Действительно, как-то странно; опять же, кто-нибудь, поправьте меня, если есть способ получше.)

4. @Richard Szalay Я полагаю, что это строка запроса, я могу установить файлы cookie и http-заголовки. Но Google Analytics ищет элементы в URL, которые необходимо задать. Я полагаю, что при вызове запроса Zend_Http_Client примет ваши параметры и добавит их к URL. И затем он отправит запрос URL.

5. Хорошо, я вижу, что происходит, тогда я могу сделать это сам, и просто отправлю ответ позже.

Ответ №2:

Я не думаю, что вы найдете универсальный эквивалент, но WebClient это ваш лучший выбор для отправной точки. HttpWebResponse и HttpWebRequest имеют немного более низкий уровень, чем WebClient . WebClient имеет несколько отличных оболочек для выполнения HTTP-запросов, среди прочего.

Комментарии:

1. Спасибо, когда я проверил HttpWebRequest и HttpWebRequest в msdn, они выглядели действительно хорошо, но я не был уверен, как добавить к ним дополнительные параметры.