Ответов: 1 Просмотров: 142
|
Здравствуйте!
Есть сервер, с которым необходимо устанавливать соединение.
После первого запроса сервер возвращает в заголовке ключ, с которым нужно будет отправлять все последующие запросы.
Вот такой заголовок приходит после первого запроса:
CODE ( text):
скопировать код в буфер обмена
HTTP/1.1 303 See Other Server: nginx/1.6.0 Date: Tue, 09 Sep 2014 10:49:38 GMT Content-Length: 0 Connection: keep-alive Set-Cookie: ring-session=cc678922-2dba-47fe-bc5c-5c7436b1496a;Path=/ Location: / Access-Control-Allow-Origin: http://*****.ru
Сейчас все это работает криво.
Я ищу в заголовке ответа сервера нужную мне переменную, а потом вставляю ее в свой заголовок следующего запроса. :
PHP:
скопировать код в буфер обмена
$s = fsockopen($ip, 30080 , $errstr, $errno, 10 ); if (!$s) { echo "$errstr ($errno)<br />\n"; } else { $post_data = "username=name&password=pass"; $out = "POST /login HTTP/1.1\r\n"; $out .= "Host: $ip\r\n"; $out .= "Content-Type: application/x-www-form-urlencoded\r\n"; $out .= "Content-Length: ".strlen($post_data)."\r\n\r\n"; $out .= $post_data."\r\n\r\n"; // Бегаем по строчкам ответа $key = "ring-session"; // Если в строке есть ring-session - вырезаем его в переменную $rs = $output[1]; } } } if($rs){ //тут запоминаю куку, но это не работает //setcookie("ring-session", $rs, time() + 30 * 24 * 60 * 60); $s = fsockopen($ip, 30080 , $errstr, $errno, 10 ); if (!$s) { echo "$errstr ($errno)<br />\n"; } else { $params = new stdClass; $params->username = "uname"; $params->session = "sid"; $out = "POST /api HTTP/1.1\r\n"; $out .= "Host: $ip\r\n"; $out .= "Content-Type: application/json\r\n"; // вставляю в заголовок ключ $out .= "Cookie: ring-session=".$rs."\r\n"; $out .= "Content-Length: ".strlen($post_data)."\r\n\r\n"; $out .= $post_data."\r\n\r\n"; } } }else{ echo "Не удалось получить ключ!"; }
Насколько я понимаю, после того как мне прилетает в заголовке строка
я должен запомнить в браузер эту куку, и в последующих запросах в моих заголовках автоматом должна быть строка
а пока я это все руками подставляю.
Если запомнить куку в браузер, то во втором запросе в заголовок эта кука не попадает, т.к. возвращается ошибка.
п.с.
а еще почему-то очень долго проходит запрос, на каждый примерно по 1-2 минуте! может я не те методы передачи данных использую?
Спасибо! |