#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, они выглядели действительно хорошо, но я не был уверен, как добавить к ним дополнительные параметры.