Bugzilla webservices с использованием php soapclient - ошибка - неправильная версия

привет, мне нужно создать ошибку в bugzilla, используя веб-службы bugzilla и php. Я не хочу использовать какие-либо другие библиотеки (например, zend, nusoap и т. Д.), Так как мой босс хочет, чтобы они использовали строго php soapclient. Попробовав пару дней, я не смог заставить его работать. Я надеюсь, что вы, ребята, можете мне помочь. Мне впервые удалось это сделать с помощью класса, доступного по адресу http://code.google.com/p/bugzillaphp/. Однако, когда мы обновились до новой версии bugzilla (4.2), и этот класс использовал запрос xmlrpc, а не веб-сервис. Так что это не удалось. Я вставляю код, запрос мыла и ответ. Пожалуйста, помогите мне, ребята.

<?php
$user = 'your email address';
$pass = 'your password';
$uri = 'http://your site/xmlrpc.cgi';       
$client = new SoapClient(NULL,
                                       array('location' => $uri,
                                            'uri'     => $uri,
                                            'trace' => 1,
                                            'soap_version' => SOAP_1_2,

                                             'action' => ""
                                            //'exceptions' => 0
));
try
{
 $result = $client->__soapCall("User.login", array(

            'login'          => $user,
            'password'       => $pass,          
            'remember'  => 'true'
            ));
print $result;                  
}
catch (Exception $e)
 {
        print $e->getMessage();
    echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
    echo "Response:\n" . $client->__getLastResponse() . "\n";
    echo "REQUEST HEADERS:\n" . $client->__getLastRequestHeaders() . "\n";
    echo "RESPONSE HEADERS:\n" . $client->__getLastResponseHeaders() . "\n";
print_r($headers);      
$headers = str_replace("application/soap+xml", "text/xml", $headers);
print_r($headers);  
 }
?>
     xml request and response, xml request headers and response headers:-

REQUEST:
 <?xml version="1.0" encoding="UTF-8"?>
 <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="htt
p://devbugz/xmlrpc.cgi" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/
soap-encoding"><env:Body><ns1:User.login env:encodingStyle="http://www.w3.org/20
03/05/soap-encoding"><param0 xsi:type="xsd:string">your email</param0><par
am1 xsi:type="xsd:string">your password</param1><param2 xsi:type="xsd:string">true</p
aram2></ns1:User.login></env:Body></env:Envelope>

Response:
<?xml version="1.0" encoding="UTF-8"?><methodResponse><fault><value><struct><mem
ber><name>faultString</name><value><string>Application failed during request des
erialization: 32612: When using XML-RPC, you cannot send data as application/soa
p+xml; charset=utf-8; action="http://devbugz/xmlrpc.cgi#User.login". Only text/x
ml and application/xml are allowed. at F:/applications/ActiveState/Perl/v5.10.0/
site/lib/SOAP/Lite.pm line 2778.
</string></value></member><member><name>faultCode</name><value><string>Client</s
tring></value></member></struct></value></fault></methodResponse>

REQUEST HEADERS:
POST /xmlrpc.cgi HTTP/1.1
Host: devbugz
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.3.9
Content-Type: application/soap+xml; charset=utf-8; action="http://yoursite/xmlrpc
.cgi#User.login"
Content-Length: 569


RESPONSE HEADERS:
HTTP/1.1 200 OK
Date: Thu, 22 Mar 2012 21:08:56 GMT
Server: Apache/2.2.19 (Win32) mod_auth_sspi/1.0.4 PHP/5.2.6 DAV/2 SVN/1.6.15 mod
_ssl/2.2.19 OpenSSL/0.9.8r
SOAPServer: SOAP::Lite/Perl/0.714
Content-Length: 578
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/xml

person Preet    schedule 22.03.2012    source источник


Ответы (2)


Это известная ошибка в Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=731219

Вы можете обновить свою Bugzilla или просто пропатчить ее патчем, предоставленным на сайте выше.

Или вы можете использовать этот ответ https://stackoverflow.com/a/1688239/1050577 и изменить версию клиента мыла на SOAP_1_1.

person sas    schedule 05.04.2012

спасибо "sas" но я разобрался. Я пришел к выводу, что, поскольку веб-службы bugzilla реализованы с использованием сервера xmlrpc (xmlrpc.cgi) (не сервера мыла), мы не можем использовать php soapclient для вызова этих служб. Я использовал клиент xmlrpc для php, доступный на phpxmlrpc.sourceforge.net, чтобы реализовать клиентский скрипт для вызова веб-сервисов bugzilla. Я скоро опубликую код для этого.

person Preet    schedule 07.04.2012