2016-02-10 5 views
0

Donc, j'ai ce travail en ruby ​​et je veux être en mesure de le faire en php. J'utilise le serveur wamp si cela compte.Faire un appel de service Web en php

est ici la méthode rubis:

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 

J'ai essayé regardant d'autres questions et c'est là qui m'a fait:

$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

"J'ai essayé de chercher d'autres questions et c'est là que ça m'a donné." D'accord, avez-vous une question? –

+0

Le code php ne fonctionne pas. il ne montre pas une erreur sur la page si donc je ne sais pas exactement ce qui est faux – moloch101

+0

vous ne voyez pas une erreur parce que vous les avez supprimés. se débarrasser du signe @ avant @http_post_data – Jeff

Répondre

0

http_post_data dépend de pecl_http. Sauf si vous devez utiliser http_post_data, cURL est probablement installé par défaut sur votre serveur WAMP.

Le code ci-dessous est juste un exemple; Je ne l'ai pas testé mais vous avez l'idée:

$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);