ruby — сделать вызов веб-службы в переполнении стека

Так что у меня это работает в ruby, и я хочу быть в состоянии сделать это в php. Я использую сервер Wamp, если это имеет значение.

Вот метод рубина:

def response(url, body)
uri = URI(url)

request = Net::HTTP::Post.new(uri.request_uri)
request.body = body

http_session = Net::HTTP.new(uri.hostname, uri.port)
http_session.use_ssl = (uri.scheme == "https")
http_session.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = http_session.request(request)

return response.body
end

Я попытался найти другие вопросы, и это то, где я получил это:

$request_info = array();
$REQUEST_BODY = 'request body';

$full_response = @http_post_data(
'url',
$REQUEST_BODY,
array(
'headers' => array(
'Content-Type' => 'text/xml; charset=UTF-8',
'SOAPAction' => 'HotelAvail',
),
'timeout' => 60,

),
$request_info
);

$response_xml = new SimpleXMLElement(strstr($full_response, '<?xml'));

foreach ($response_xml->xpath('//@HotelName') as $HotelName) {
echo strval($HotelName) . "\n";
}

0

Решение

http_post_data зависит от pecl_http. Если вы не используете http_post_data, cURL, вероятно, установлен по умолчанию на вашем сервере WAMP.

Код ниже — только пример; Я не проверял это, но вы поняли:

$headers = array(
'Content-Type' => 'text/xml; charset=UTF-8',
'SOAPAction' => 'HotelAvail',
);

$ch = curl_init($server_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$full_response = curl_exec($ch);
curl_close($ch);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]