kxc
kxc

Reputation: 1457

SOAP wsdl, Authorization

I'm trying to make SOAP request, but for that i must be authorized. If i try to call function without authorization, i get error about it, all okay. But when i trying to do that, i always get that error: Parsing Schema: can't import schema from 'http://www.w3.org/2005/05/xmlmime' But if i do that with SoapUI, all works fine. I found that i must send login and password as object parametrs, there's my code example, but it's return to me error about Parsing Schema: can't....

$wsdl = 'source/my.wsdl';
$client = new SoapClient($wsdl,
    array(
        'trace' => 1,
        'exception' => 0,
        'login' => 'test',
        'password' => 'test123'
    ));

I didn't find any other ways to do it, only with NuSOAP, like setCredentials(), but that dont work too.


Now i tried do that with NuSOAP:

ini_set('display_errors', '1');
ini_set('error_reporting', E_ALL &~ (E_NOTICE | E_STRICT));
//ini_set('error_reporting', E_ALL);

require_once 'lib/nusoap.php';

$params = array(
        'ID' => '',
        'Portal' => 'test1',
        'CK' => 'test2'
    );

$wsdl = 'source/test.wsdl';
$client = new nusoap_client($wsdl, true);

$client->setCredentials('test_login', 'test_password', 'basic');

$result = $client->call('testFunction', $params);

if ($client->fault) {
    echo "<h2>Fault</h2><pre>";
    print_r($result);
    echo "</pre>";
} else {
    $error = $client->getError();
    if ($error) {
        echo "<h2>Error</h2><pre>" . $error . "</pre>";
    } else {
        echo "<h2>Main</h2>";
        echo $result;
    }
}

echo "<h2>Request</h2>";
echo "<pre>" . htmlspecialchars($client->request, ENT_QUOTES) . "</pre>";
echo "<h2>Response</h2>";
echo "<pre>" . htmlspecialchars($client->response, ENT_QUOTES) . "</pre>";

print_r($client->response);

And get the same problem wsdl error: Getting http://www.w3.org/2005/05/xmlmime - HTTP ERROR: Unsupported HTTP response status 307 Temporary Redirect (soapclient->response has contents of the response) If i remove string $client->setCredentials('test_login', 'test_password', 'basic'); I'll get error about Not Authorized. What's the problem with that http://www.w3.org/2005/05/xmlmime. It's third day i've trying to call test function, but always get that error. I don't know what else i can try to do. From NuSOAP all work fine, basic auth, all requests, response, all fine.


WSDL Content:

<definitions targetNamespace="http://**.**.com/SM/7" xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/ http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:cmn="http://**.**.com/SM/7/Common" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ns="http://**.**.com/SM/7" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <types>
        <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://**.**.com/SM/7" version="2014-10-02 Rev 1" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://**.**.com/SM/7" xmlns:xmime="http://www.w3.org/2005/05/xmlmime">
            <xs:import namespace="http://www.w3.org/2005/05/xmlmime" schemaLocation="http://www.w3.org/2005/05/xmlmime"/>
            <xs:import namespace="http://**.**.com/SM/7/Common" schemaLocation="http://***.**.**.**:8090/1/SM/7/Common.xsd"/>
            <xs:complexType name="HPSMInteractionsFromMosRuKeysType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="ID" nillable="true" type="cmn:StringType"/>
                </xs:sequence>
                <xs:attribute name="query" type="xs:string" use="optional"/>
                <xs:attribute name="updatecounter" type="xs:long" use="optional"/>
            </xs:complexType>
            <xs:complexType name="HPSMInteractionsFromMosRuInstanceType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="ID" nillable="true" type="cmn:StringType"/>
                    <xs:element minOccurs="0" name="Description">
                        <xs:complexType>
                            <xs:complexContent>
                                <xs:extension base="cmn:ArrayType">
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" minOccurs="0" name="Description" type="cmn:StringType"/>
                                    </xs:sequence>
                                </xs:extension>
                            </xs:complexContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Resolution">
                        <xs:complexType>
                            <xs:complexContent>
                                <xs:extension base="cmn:ArrayType">
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" minOccurs="0" name="Resolution" type="cmn:StringType"/>
                                    </xs:sequence>
                                </xs:extension>
                            </xs:complexContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="ResolutionCode" nillable="true" type="cmn:StringType"/>
                    <xs:element minOccurs="0" name="Email" nillable="true" type="cmn:StringType"/>
                    <xs:element minOccurs="0" name="User" nillable="true" type="cmn:StringType"/>
                    <xs:element minOccurs="0" name="Title" nillable="true" type="cmn:StringType"/>
                    <xs:element minOccurs="0" name="Status" nillable="true" type="cmn:StringType"/>
                    <xs:element minOccurs="0" name="Rating" nillable="true" type="cmn:StringType"/>
                    <xs:element minOccurs="0" name="ProblemType" nillable="true" type="cmn:StringType"/>
                    <xs:element minOccurs="0" name="Deadline" nillable="true" type="cmn:DateTimeType"/>
                    <xs:element minOccurs="0" name="Feedback">
                        <xs:complexType>
                            <xs:complexContent>
                                <xs:extension base="cmn:ArrayType">
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" minOccurs="0" name="Feedback" type="cmn:StringType"/>
                                    </xs:sequence>
                                </xs:extension>
                            </xs:complexContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="UserID" nillable="true" type="cmn:StringType"/>
                    <xs:element minOccurs="0" name="Portal" nillable="true" type="cmn:StringType"/>
                    <xs:element minOccurs="0" name="SSOID" nillable="true" type="cmn:StringType"/>
                    <xs:element minOccurs="0" name="CK" nillable="true" type="cmn:StringType"/>
                    <xs:element minOccurs="0" name="Comments">
                        <xs:complexType>
                            <xs:complexContent>
                                <xs:extension base="cmn:ArrayType">
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" minOccurs="0" name="Comments" type="cmn:StringType"/>
                                    </xs:sequence>
                                </xs:extension>
                            </xs:complexContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="attachments" nillable="true" type="cmn:AttachmentsType"/>
                </xs:sequence>
                <xs:attribute name="query" type="xs:string" use="optional"/>
                <xs:attribute name="uniquequery" type="xs:string" use="optional"/>
                <xs:attribute name="recordid" type="xs:string" use="optional"/>
                <xs:attribute name="updatecounter" type="xs:long" use="optional"/>
            </xs:complexType>
            <xs:complexType name="HPSMInteractionsFromMosRuModelType">
                <xs:sequence>
                    <xs:element name="keys" type="HPSMInteractionsFromMosRuKeysType"/>
                    <xs:element name="instance" type="HPSMInteractionsFromMosRuInstanceType"/>
                    <xs:element minOccurs="0" name="messages" type="cmn:MessagesType"/>
                </xs:sequence>
                <xs:attribute name="query" type="xs:string" use="optional"/>
            </xs:complexType>
            <xs:element name="RetrieveHPSMInteractionsFromMosRuRequest">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="model" type="HPSMInteractionsFromMosRuModelType"/>
                    </xs:sequence>
                    <xs:attribute name="attachmentInfo" type="xs:boolean" use="optional"/>
                    <xs:attribute name="attachmentData" type="xs:boolean" use="optional"/>
                    <xs:attribute default="true" name="ignoreEmptyElements" type="xs:boolean" use="optional"/>
                    <xs:attribute name="updatecounter" type="xs:boolean" use="optional"/>
                    <xs:attribute name="handle" type="xs:string" use="optional"/>
                    <xs:attribute name="count" type="xs:long" use="optional"/>
                    <xs:attribute name="start" type="xs:long" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="RetrieveHPSMInteractionsFromMosRuResponse">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="model" type="HPSMInteractionsFromMosRuModelType"/>
                        <xs:element minOccurs="0" name="messages" type="cmn:MessagesType"/>
                    </xs:sequence>
                    <xs:attribute name="status" type="cmn:StatusType" use="required"/>
                    <xs:attribute name="message" type="xs:string" use="required"/>
                    <xs:attribute name="schemaRevisionDate" type="xs:date" use="required"/>
                    <xs:attribute name="schemaRevisionLevel" type="xs:int" use="required"/>
                    <xs:attribute name="returnCode" type="xs:decimal" use="optional"/>
                    <xs:attribute name="query" type="xs:string" use="optional"/>
                    <xs:attribute name="handle" type="xs:string" use="optional"/>
                    <xs:attribute name="count" type="xs:long" use="optional"/>
                    <xs:attribute name="more" type="xs:boolean" use="optional"/>
                    <xs:attribute name="start" type="xs:long" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="RetrieveHPSMInteractionsFromMosRuKeysListRequest">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="model" type="HPSMInteractionsFromMosRuModelType"/>
                    </xs:sequence>
                    <xs:attribute name="attachmentInfo" type="xs:boolean" use="optional"/>
                    <xs:attribute name="attachmentData" type="xs:boolean" use="optional"/>
                    <xs:attribute default="true" name="ignoreEmptyElements" type="xs:boolean" use="optional"/>
                    <xs:attribute name="updatecounter" type="xs:boolean" use="optional"/>
                    <xs:attribute name="handle" type="xs:string" use="optional"/>
                    <xs:attribute name="count" type="xs:long" use="optional"/>
                    <xs:attribute name="start" type="xs:long" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="RetrieveHPSMInteractionsFromMosRuKeysListResponse">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" name="keys" type="HPSMInteractionsFromMosRuKeysType"/>
                        <xs:element minOccurs="0" name="messages" type="cmn:MessagesType"/>
                    </xs:sequence>
                    <xs:attribute name="status" type="cmn:StatusType" use="required"/>
                    <xs:attribute name="message" type="xs:string" use="required"/>
                    <xs:attribute name="schemaRevisionDate" type="xs:date" use="required"/>
                    <xs:attribute name="schemaRevisionLevel" type="xs:int" use="required"/>
                    <xs:attribute name="returnCode" type="xs:decimal" use="optional"/>
                    <xs:attribute name="query" type="xs:string" use="optional"/>
                    <xs:attribute name="handle" type="xs:string" use="optional"/>
                    <xs:attribute name="count" type="xs:long" use="optional"/>
                    <xs:attribute name="more" type="xs:boolean" use="optional"/>
                    <xs:attribute name="start" type="xs:long" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="RetrieveHPSMInteractionsFromMosRuListRequest">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" name="keys" type="HPSMInteractionsFromMosRuKeysType"/>
                    </xs:sequence>
                    <xs:attribute name="attachmentInfo" type="xs:boolean" use="optional"/>
                    <xs:attribute name="attachmentData" type="xs:boolean" use="optional"/>
                    <xs:attribute default="true" name="ignoreEmptyElements" type="xs:boolean" use="optional"/>
                    <xs:attribute name="updatecounter" type="xs:boolean" use="optional"/>
                    <xs:attribute name="handle" type="xs:string" use="optional"/>
                    <xs:attribute name="count" type="xs:long" use="optional"/>
                    <xs:attribute name="start" type="xs:long" use="optional"/>
                    <xs:attribute name="attachmentType" type="xs:long" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="RetrieveHPSMInteractionsFromMosRuListResponse">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" name="instance" type="HPSMInteractionsFromMosRuInstanceType"/>
                        <xs:element minOccurs="0" name="messages" type="cmn:MessagesType"/>
                    </xs:sequence>
                    <xs:attribute name="status" type="cmn:StatusType" use="required"/>
                    <xs:attribute name="message" type="xs:string" use="required"/>
                    <xs:attribute name="schemaRevisionDate" type="xs:date" use="required"/>
                    <xs:attribute name="schemaRevisionLevel" type="xs:int" use="required"/>
                    <xs:attribute name="returnCode" type="xs:decimal" use="optional"/>
                    <xs:attribute name="query" type="xs:string" use="optional"/>
                    <xs:attribute name="handle" type="xs:string" use="optional"/>
                    <xs:attribute name="count" type="xs:long" use="optional"/>
                    <xs:attribute name="more" type="xs:boolean" use="optional"/>
                    <xs:attribute name="start" type="xs:long" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="CreateHPSMInteractionsFromMosRuRequest">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="model" type="HPSMInteractionsFromMosRuModelType"/>
                    </xs:sequence>
                    <xs:attribute name="attachmentInfo" type="xs:boolean" use="optional"/>
                    <xs:attribute name="attachmentData" type="xs:boolean" use="optional"/>
                    <xs:attribute default="true" name="ignoreEmptyElements" type="xs:boolean" use="optional"/>
                    <xs:attribute name="updateconstraint" type="xs:long" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="CreateHPSMInteractionsFromMosRuResponse">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="model" type="HPSMInteractionsFromMosRuModelType"/>
                        <xs:element minOccurs="0" name="messages" type="cmn:MessagesType"/>
                    </xs:sequence>
                    <xs:attribute name="status" type="cmn:StatusType" use="required"/>
                    <xs:attribute name="message" type="xs:string" use="required"/>
                    <xs:attribute name="schemaRevisionDate" type="xs:date" use="required"/>
                    <xs:attribute name="schemaRevisionLevel" type="xs:int" use="required"/>
                    <xs:attribute name="returnCode" type="xs:decimal" use="optional"/>
                    <xs:attribute name="query" type="xs:string" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="UpdateHPSMInteractionsFromMosRuRequest">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="model" type="HPSMInteractionsFromMosRuModelType"/>
                    </xs:sequence>
                    <xs:attribute name="attachmentInfo" type="xs:boolean" use="optional"/>
                    <xs:attribute name="attachmentData" type="xs:boolean" use="optional"/>
                    <xs:attribute default="true" name="ignoreEmptyElements" type="xs:boolean" use="optional"/>
                    <xs:attribute name="updateconstraint" type="xs:long" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="UpdateHPSMInteractionsFromMosRuResponse">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="model" type="HPSMInteractionsFromMosRuModelType"/>
                        <xs:element minOccurs="0" name="messages" type="cmn:MessagesType"/>
                    </xs:sequence>
                    <xs:attribute name="status" type="cmn:StatusType" use="required"/>
                    <xs:attribute name="message" type="xs:string" use="required"/>
                    <xs:attribute name="schemaRevisionDate" type="xs:date" use="required"/>
                    <xs:attribute name="schemaRevisionLevel" type="xs:int" use="required"/>
                    <xs:attribute name="returnCode" type="xs:decimal" use="optional"/>
                    <xs:attribute name="query" type="xs:string" use="optional"/>
                </xs:complexType>
            </xs:element>
        </xs:schema>
    </types>
    <message name="RetrieveHPSMInteractionsFromMosRuRequest">
        <part element="ns:RetrieveHPSMInteractionsFromMosRuRequest" name="RetrieveHPSMInteractionsFromMosRuRequest"/>
    </message>
    <message name="RetrieveHPSMInteractionsFromMosRuResponse">
        <part element="ns:RetrieveHPSMInteractionsFromMosRuResponse" name="RetrieveHPSMInteractionsFromMosRuResponse"/>
    </message>
    <message name="RetrieveHPSMInteractionsFromMosRuKeysListRequest">
        <part element="ns:RetrieveHPSMInteractionsFromMosRuKeysListRequest" name="RetrieveHPSMInteractionsFromMosRuKeysListRequest"/>
    </message>
    <message name="RetrieveHPSMInteractionsFromMosRuKeysListResponse">
        <part element="ns:RetrieveHPSMInteractionsFromMosRuKeysListResponse" name="RetrieveHPSMInteractionsFromMosRuKeysListResponse"/>
    </message>
    <message name="RetrieveHPSMInteractionsFromMosRuListRequest">
        <part element="ns:RetrieveHPSMInteractionsFromMosRuListRequest" name="RetrieveHPSMInteractionsFromMosRuListRequest"/>
    </message>
    <message name="RetrieveHPSMInteractionsFromMosRuListResponse">
        <part element="ns:RetrieveHPSMInteractionsFromMosRuListResponse" name="RetrieveHPSMInteractionsFromMosRuListResponse"/>
    </message>
    <message name="CreateHPSMInteractionsFromMosRuRequest">
        <part element="ns:CreateHPSMInteractionsFromMosRuRequest" name="CreateHPSMInteractionsFromMosRuRequest"/>
    </message>
    <message name="CreateHPSMInteractionsFromMosRuResponse">
        <part element="ns:CreateHPSMInteractionsFromMosRuResponse" name="CreateHPSMInteractionsFromMosRuResponse"/>
    </message>
    <message name="UpdateHPSMInteractionsFromMosRuRequest">
        <part element="ns:UpdateHPSMInteractionsFromMosRuRequest" name="UpdateHPSMInteractionsFromMosRuRequest"/>
    </message>
    <message name="UpdateHPSMInteractionsFromMosRuResponse">
        <part element="ns:UpdateHPSMInteractionsFromMosRuResponse" name="UpdateHPSMInteractionsFromMosRuResponse"/>
    </message>
    <portType name="HPSMInteractionsFromMosRu">
        <operation name="RetrieveHPSMInteractionsFromMosRu">
            <documentation/>
            <input message="ns:RetrieveHPSMInteractionsFromMosRuRequest"/>
            <output message="ns:RetrieveHPSMInteractionsFromMosRuResponse"/>
        </operation>
        <operation name="RetrieveHPSMInteractionsFromMosRuKeysList">
            <documentation/>
            <input message="ns:RetrieveHPSMInteractionsFromMosRuKeysListRequest"/>
            <output message="ns:RetrieveHPSMInteractionsFromMosRuKeysListResponse"/>
        </operation>
        <operation name="RetrieveHPSMInteractionsFromMosRuList">
            <documentation/>
            <input message="ns:RetrieveHPSMInteractionsFromMosRuListRequest"/>
            <output message="ns:RetrieveHPSMInteractionsFromMosRuListResponse"/>
        </operation>
        <operation name="CreateHPSMInteractionsFromMosRu">
            <documentation/>
            <input message="ns:CreateHPSMInteractionsFromMosRuRequest"/>
            <output message="ns:CreateHPSMInteractionsFromMosRuResponse"/>
        </operation>
        <operation name="UpdateHPSMInteractionsFromMosRu">
            <documentation/>
            <input message="ns:UpdateHPSMInteractionsFromMosRuRequest"/>
            <output message="ns:UpdateHPSMInteractionsFromMosRuResponse"/>
        </operation>
    </portType>
    <binding name="HPSMInteractionsFromMosRu" type="ns:HPSMInteractionsFromMosRu">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="RetrieveHPSMInteractionsFromMosRu">
            <soap:operation soapAction="Retrieve" style="document"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
        <operation name="RetrieveHPSMInteractionsFromMosRuKeysList">
            <soap:operation soapAction="RetrieveKeysList" style="document"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
        <operation name="RetrieveHPSMInteractionsFromMosRuList">
            <soap:operation soapAction="RetrieveList" style="document"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
        <operation name="CreateHPSMInteractionsFromMosRu">
            <soap:operation soapAction="Create" style="document"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
        <operation name="UpdateHPSMInteractionsFromMosRu">
            <soap:operation soapAction="Update" style="document"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
    </binding>
    <service name="HPSMInteractionsFromMosRu">
        <port binding="ns:HPSMInteractionsFromMosRu" name="HPSMInteractionsFromMosRu">
            <soap:address location="http://***.**.**.**:8090/1/SM/7/ws"/>
        </port>
    </service>
</definitions>

Upvotes: 2

Views: 2409

Answers (1)

kxc
kxc

Reputation: 1457

I've found a solution for me! Problem with that error was that i couldn't get in that file from my script, so you need to save them locally: I saved that file (http://www.w3.org/2005/05/xmlmime) into my work directory , and have changed WSDL file pathes (schemaLocation=...) also to my locally copies Now it's looks like this (in WSDL(

<xs:import namespace="http://www.w3.org/2005/05/xmlmime" schemaLocation="http://mydomain/xmlmime.xml"/>
<xs:import namespace="http://schemas.hp.com/SM/7/Common" schemaLocation="http://mydomain/Common.xsd"/>

And also changed that path in my local copy of Common.xsd

<xs:import namespace="http://www.w3.org/2005/05/xmlmime" schemaLocation="http://mydomain/xmlmime.xml"/>

And now i dont receive that error!

P.S In my case, there was some other mistakes with file pathes in WSDL file which i received from server side developers, but it specifically was in my case. So always checke URI path. :)

Upvotes: 2

Related Questions