Вот информация о запросе SOAP:
$keyword = 'software'; //some keyword $soapUrl = "http://auctions.godaddy.com/gdAuctionsWSAPI/gdAuctionsBiddingWS.asmx"; // asmx URL of WSDL $soapUser = "XXX"; // username $soapPassword = "XXX"; // password $xml_post_string = '<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <GetAuctionList2 xmlns="GdAuctionsBiddingWSAPI"> <pageNumber>1</pageNumber> <rowsPerPage>5</rowsPerPage> <keyWord>'. $keyword .'</keyWord> <searchType>beginswith</searchType> <apiKey>XXXXX</apiKey> </GetAuctionList2> </soap:Body> </soap:Envelope> '; $headers = array( "Content-type: text/xml;charset=\"utf-8\"", "Accept: text/xml", "Cache-Control: no-cache", "Pragma: no-cache", "SOAPAction: GdAuctionsBiddingWSAPI/GetAuctionList2", "Content-length: ".strlen($xml_post_string) ); $url = $soapUrl; // PHP cURL for https connection with auth $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, $soapUser.":".$soapPassword); // username and password - declared at the top of the doc curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string); // the SOAP request curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); curl_close($ch); var_dump($response); // Shows result $response1 = str_replace("<soap:Body>","",$response); $response2 = str_replace("</soap:Body>","",$response1); // convertingc to XML $parser = simplexml_load_string($response2); // getting error here // user $parser to get your data out of XML response and to display it.
Теперь, как сделать запрос SoapClient и получить ответ в виде массива? Любая помощь должна быть оценена. благодаря
Ниже вы можете найти рабочий пример:
<?php $keyword = 'software'; //some keyword $soapUrl = "http://auctions.godaddy.com/gdAuctionsWSAPI/gdAuctionsBiddingWS.asmx"; // asmx URL of WSDL $soapUser = "xxx"; // username $soapPassword = "xxx"; // password $xml_post_string = '<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <GetAuctionList2 xmlns="GdAuctionsBiddingWSAPI"> <pageNumber>1</pageNumber> <rowsPerPage>5</rowsPerPage> <keyWord>'. $keyword .'</keyWord> <searchType>beginswith</searchType> <apiKey>somekey</apiKey> </GetAuctionList2> </soap:Body> </soap:Envelope> '; $headers = array( "Content-type: text/xml;charset=\"utf-8\"", "Accept: text/xml", "Cache-Control: no-cache", "Pragma: no-cache", "SOAPAction: GdAuctionsBiddingWSAPI/GetAuctionList2", "Content-length: ".strlen($xml_post_string) ); $url = $soapUrl; // PHP cURL for https connection with auth $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, $soapUser.":".$soapPassword); // username and password - declared at the top of the doc curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string); // the SOAP request curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); $k=xml2array($response); curl_close($ch); function xml2array($content, $get_attributes = 1, $priority = 'tag') { $contents = ""; if (!function_exists('xml_parser_create')) { return array (); } $parser = xml_parser_create(''); $contents = $content; xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8"); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, trim($contents), $xml_values); xml_parser_free($parser); if (!$xml_values) return; //Hmm... $xml_array = array (); $parents = array (); $opened_tags = array (); $arr = array (); $current = & $xml_array; $repeated_tag_index = array (); foreach ($xml_values as $data) { unset ($attributes, $value); extract($data); $result = array (); $attributes_data = array (); if (isset ($value)) { if ($priority == 'tag') $result = $value; else $result['value'] = $value; } if (isset ($attributes) and $get_attributes) { foreach ($attributes as $attr => $val) { if ($priority == 'tag') $attributes_data[$attr] = $val; else $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr' } } if ($type == "open") { $parent[$level -1] = & $current; if (!is_array($current) or (!in_array($tag, array_keys($current)))) { $current[$tag] = $result; if ($attributes_data) $current[$tag . '_attr'] = $attributes_data; $repeated_tag_index[$tag . '_' . $level] = 1; $current = & $current[$tag]; } else { if (isset ($current[$tag][0])) { $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result; $repeated_tag_index[$tag . '_' . $level]++; } else { $current[$tag] = array ( $current[$tag], $result ); $repeated_tag_index[$tag . '_' . $level] = 2; if (isset ($current[$tag . '_attr'])) { $current[$tag]['0_attr'] = $current[$tag . '_attr']; unset ($current[$tag . '_attr']); } } $last_item_index = $repeated_tag_index[$tag . '_' . $level] - 1; $current = & $current[$tag][$last_item_index]; } } elseif ($type == "complete") { if (!isset ($current[$tag])) { $current[$tag] = $result; $repeated_tag_index[$tag . '_' . $level] = 1; if ($priority == 'tag' and $attributes_data) $current[$tag . '_attr'] = $attributes_data; } else { if (isset ($current[$tag][0]) and is_array($current[$tag])) { $current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result; if ($priority == 'tag' and $get_attributes and $attributes_data) { $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data; } $repeated_tag_index[$tag . '_' . $level]++; } else { $current[$tag] = array ( $current[$tag], $result ); $repeated_tag_index[$tag . '_' . $level] = 1; if ($priority == 'tag' and $get_attributes) { if (isset ($current[$tag . '_attr'])) { $current[$tag]['0_attr'] = $current[$tag . '_attr']; unset ($current[$tag . '_attr']); } if ($attributes_data) { $current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data; } } $repeated_tag_index[$tag . '_' . $level]++; //0 and 1 index is already taken } } } elseif ($type == 'close') { $current = & $parent[$level -1]; } } return ($xml_array); } ?>
Вам придется добавить логику итерации массива самостоятельно.
Это должно работать:
var $soapUrl = "http://auctions.godaddy.com/gdAuctionsWSAPI/gdAuctionsBiddingWS.asmx?WSDL"; $client = new SoapClient($soapUrl); $result = $client->GetAuctionList2(array('pageNumber'=>'1','rowsPerPage'=>'5','keyword'=>$keyword,'searchType'=>'beginswith','apiKey'=>'myAPIKey'));
Вам не нужно создавать XML и все в этом подходе. Результатом будет массив объектов, который вы можете print_r (), чтобы увидеть содержимое как массив.