Можно ли преобразовать этот код cURL в Guzzle?PHP cURL to Guzzle
$ch = curl_init('whois.nic.co');
curl_setopt($ch, CURLOPT_PORT, 43);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "example.co\r\n");
$response = curl_exec($ch);
curl_close($ch);
Пробовал с помощью этого кода, но, похоже, не работает.
$client = new Client(['base_uri' => 'whois.nic.co:43']);
$request = $client->post('', array('Content-Type' => 'text/plain; charset=UTF8'), "example.co\r\n");
$response = $request->send();
Код выше ошибки возврата: cURL error 0: The cURL request was retried 3 times and did not succeed. The most likely reason for the failure is that cURL was unable to rewind the body of the request and subsequent retries resulted in the same error. Turn on the debug option to see what went wrong. See https://bugs.php.net/bug.php?id=47204 for more information. (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
IIRC '$ client-> post()' фактически выполняет запрос и возвращает ответ. Вероятно, у вас также должен быть идентификатор протокола, например 'http: //', на вашем 'base_uri', и вы уверены, что хотите порт 43, а не 443? Наконец, довольно странно видеть голую ошибку cURL при использовании Guzzle. Обычно сам Guzzle создает исключение, трассировка стека которого может быть весьма полезной. – Sammitch
Guzzle добавит 'http', если он не предоставлен, и whois lookup всегда использует порт' 43' – Rifki
После изучения [протокола WHOIS] (https://tools.ietf.org/html/rfc3912) у меня есть лучший вопрос : Почему вы пытаетесь использовать клиентские библиотеки HTTP для доступа к службам, отличным от HTTP? По крайней мере, Guzzle собирается отправлять заголовки HTTP (не говоря уже о заголовках, которые вы указываете вручную), что служба WHOIS не имеет надежды осмыслить. – Sammitch