Re: Cannot find encoding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 9 May 2011 12:50, Finn Gruwier Larsen <finn@gruwier.dk> wrote:
> Den 09-05-2011 13:08, Richard Quadling skrev:
>>
>> On 9 May 2011 11:48, Richard Quadling<rquadling@gmail.com> Âwrote:
>>>
>>> On 9 May 2011 11:26, Finn Gruwier Larsen<finn@gruwier.dk> Âwrote:
>>>>
>>>> Den 09-05-2011 12:14, Richard Quadling skrev:
>>>>>
>>>>> On 9 May 2011 11:12, Finn Gruwier Larsen<finn@gruwier.dk> Â Âwrote:
>>>>>>
>>>>>> Den 09-05-2011 12:01, Richard Quadling skrev:
>>>>>>>
>>>>>>> On 9 May 2011 09:52, Finn Gruwier Larsen<finn@gruwier.dk> Â Â Âwrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I am trying to get a SOAP request working. At this line in my code:
>>>>>>>>
>>>>>>>> $info = $soapClient->__call("getLegalUnit", array($ap_param));
>>>>>>>>
>>>>>>>> I get this error:
>>>>>>>>
>>>>>>>> PHP Fatal error: ÂSOAP-ERROR: Encoding: Cannot find encoding
>>>>>>>> in<file>
>>>>>>>> Â<line
>>>>>>>> no>.
>>>>>>>>
>>>>>>>> What does "encoding" mean in this context, and how do I specify it?
>>>>>>>>
>>>>>>>> Best regards,
>>>>>>>>
>>>>>>>> Finn
>>>>>>>>
>>>>>>>> --
>>>>>>>> PHP Soap Mailing List (http://www.php.net/)
>>>>>>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> What parameters do you pass to the SOAPClient constructor?
>>>>>>>
>>>>>>> http://docs.php.net/manual/en/soapclient.soapclient.php
>>>>>>>
>>>>>>> "The encoding option defines internal character encoding. This option
>>>>>>> does not change the encoding of SOAP requests (it is always utf-8),
>>>>>>> but converts strings into it."
>>>>>>>
>>>>>>> I use these options (amongst others) ...
>>>>>>>
>>>>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â'encoding' Â=>
>>>>>>> Â'ISO-8859-1',
>>>>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â'exception' =>
>>>>>>> ÂTrue,
>>>>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â'trace' Â Â =>
>>>>>>> ÂTrue,
>>>>>>>
>>>>>>> Richard.
>>>>>>>
>>>>>>
>>>>>> I only passed the "trace => Â ÂTrue" parameter.
>>>>>>
>>>>>> Passing the extra parameters above does not change anything. I also
>>>>>> tried
>>>>>> "encoding => Â Â'UTF-8'" with same result.
>>>>>>
>>>>>> Finn
>>>>>>
>>>>>
>>>>> Can you show more code?
>>>>>
>>>>
>>>> Sure.
>>>>
>>>> <?php
>>>> // Create private key:
>>>> $privateKey = openssl_pkey_new();
>>>>
>>>> // Create certificate signing request:
>>>> $csr = openssl_csr_new(array('http://...'), $privateKey);
>>>>
>>>> // Get public key:
>>>> $publicKey = openssl_csr_get_public_key($csr);
>>>> // print_r(openssl_pkey_get_details($publicKey));
>>>>
>>>> // Create SOAP client:
>>>> $params = array(
>>>> Â Â Â Â Â Â'trace' => ÂTrue,
>>>> Â Â Â Â Â Â'encoding' Â=> Â'UTF-8',
>>>> Â Â Â Â Â Â'exception' => ÂTrue);
>>>> $soapClient = new SoapClient("LegalUnitGet_20080401.wsdl", $params);
>>>>
>>>> $ns = 'http://...';
>>>>
>>>> // Prepare SoapHeader parameters
>>>> $sh_param = array(
>>>> Â Â Â Â Â Â'PrivateKey' Â Â=> Â Â Â$privateKey,
>>>> Â Â Â Â Â Â'PublicKey' Â Â=> Â Â Â $publicKey);
>>>> $headers = new SoapHeader('http://...', 'Security', $sh_param);
>>>>
>>>> // Prepare Soap Client
>>>> $soapClient->__setSoapHeaders(array($headers));
>>>>
>>>> // Setup the RemoteFunction parameters
>>>> $ap_param = array(
>>>> Â Â Â Â Â Â'LegalUnitIdentifier' Â Â => Â Â Â'xxxxxx',
>>>> Â Â Â Â Â Â'UserId' Â Â=> Â Â Â'xxxxx',
>>>> Â Â Â Â Â Â'Password' Â Â=> Â Â Â'xxxxx');
>>>>
>>>> $info = $soapClient->__getFunctions();
>>>> print_r($info);
>>>>
>>>> // Call Remote Function ()
>>>> $error = 0;
>>>> try {
>>>> Â Â$info = $soapClient->__soapCall("getLegalUnit", array($ap_param));
>>>> } catch (SoapFault $fault) {
>>>> Â Â$error = 1;
>>>> Â Âprint("Faultcode: ".$fault->faultcode)."\n";
>>>> Â Âprint("Faultstring: ".$fault->faultstring);
>>>> }
>>>>
>>>> --
>>>>
>>>> Finn
>>>>
>>>
>>> Is the file and line in the file you've shown? As you are using Soap
>>> faults, is it possible that this is a server side error coming across
>>> in the soap fault?
>>> --
>>> Richard Quadling
>>> Twitter : EE : Zend
>>> @RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY
>>>
>>
>> In looking at the possible cause of the error. The error is caused by
>> a failure in a hash lookup in the function get_conversion()
>> (php_encoding.c)
>>
>> In tracking that back to the callee for the function, the sort of
>> calls being made are NOT to do with character encoding, but type
>> encoding.
>>
>> e.g.
>>
>> Windows Grep Search Results
>> 'get_conversion' in *.*: 33 matches in 5 files. 677 files searched. 0
>> files skipped.
>>
>> Plain | File contents à | File names à | Line numbers à | Whole line Ã
>> | Word wrap | Fixed Font | Match window: +/- 0Ã | 1 | 2 | 3 | 4 | 5
>> lines
>>
>> D:\BuildPHP\php53dev\vc9\x86\PHP_5_3\ext\soap\php_encoding.c
>> 00403: enc = get_conversion(Z_LVAL_P(*ztype));
>> 00471: encode = get_conversion(UNKNOWN_TYPE);
>> 00561: encode = get_conversion(UNKNOWN_TYPE);
>> 01277: zval* val = master_to_zval(get_conversion(XSD_ANYXML), node);
>> 01296: zval* val2 = master_to_zval(get_conversion(XSD_ANYXML),
>> node->next);
>> 01767: enc = get_conversion(XSD_ANYXML);
>> 02042: property = master_to_xml(get_conversion((*zprop)->type),
>> (*zprop), style, xmlParam);
>> 02075: enc = get_conversion(APACHE_MAP);
>> 02077: enc = get_conversion(SOAP_ENC_ARRAY);
>> 02081: enc = get_conversion(IS_NULL);
>> 02204: xparam = master_to_xml(get_conversion((*zdata)->type),
>> (*zdata), style, xmlParam);
>> 02805: xparam = master_to_xml(get_conversion((*temp_data)->type),
>> (*temp_data), style, item);
>> 02868: enc = get_conversion(data->type);
>> 02870: enc = get_conversion(IS_NULL);
>> 02892: enc = get_conversion(IS_NULL);
>> 02894: enc = get_conversion(IS_NULL);
>> 02926: enc = get_conversion(SOAP_ENC_ARRAY);
>> 02928: enc = get_conversion(XSD_STRING);
>> 02932: enc = get_conversion(SOAP_ENC_OBJECT);
>> 03223: encodePtr enc = get_conversion(XSD_ANYXML);
>> 03581: encodePtr get_conversion(int encode)
>> 03621: return get_conversion(XSD_ANYTYPE);
>> 03683: return get_conversion(XSD_ANYTYPE);
>> 03707: enc = get_conversion(cur_type);
>>
>> D:\BuildPHP\php53dev\vc9\x86\PHP_5_3\ext\soap\php_encoding.h
>> 00208: encodePtr get_conversion(int encode);
>>
>> D:\BuildPHP\php53dev\vc9\x86\PHP_5_3\ext\soap\php_packet_soap.c
>> 00194: zval *zv = master_to_zval(get_conversion(IS_STRING), tmp);
>> 00201: zval *zv = master_to_zval(get_conversion(IS_STRING), tmp);
>> 00224: zval *zv = master_to_zval(get_conversion(IS_STRING), tmp);
>>
>> D:\BuildPHP\php53dev\vc9\x86\PHP_5_3\ext\soap\php_schema.c
>> 02210: type->encode = get_conversion(XSD_ANYXML);
>>
>> D:\BuildPHP\php53dev\vc9\x86\PHP_5_3\ext\soap\soap.c
>> 01137: enc = get_conversion(UNKNOWN_TYPE);
>> 04130: xmlNodePtr node = master_to_xml(get_conversion(IS_STRING),
>> *tmp, SOAP_LITERAL, param);
>> 04134: xmlNodePtr node = master_to_xml(get_conversion(IS_STRING),
>> *tmp, SOAP_LITERAL, param);
>> 04156: node = master_to_xml(get_conversion(IS_STRING), *tmp,
>> SOAP_LITERAL, node);
>>
>>
>> So, it looks more like the client is sending a type that no map exists
>> for.
>>
>> At a guess.
>>
>> Can you provide the URL for the wsdl file?
>
> http://archprod.service.eogs.dk/cvronline/metacvronline/LegalUnitGet_20080401.wsdl
>
> Finn
>
>

I think the params are incorrect.

public function getLegalUnit(GetLegalUnitRequestType $getRequest)

class GetLegalUnitRequestType {
  public $LegalUnitIdentifier; // LegalUnitIdentifierType
  public $level; // LevelType
}

class LegalUnitIdentifierType {
}

class LevelType {
}

The complex types of LegalUnitIdentifierType and LevelType don't seem
to be right for wsdl2php (the class builder I use - sourceforge).

Using the array method, then maybe ... array('LegalUnitIdentifierType'
=> 'xxx', 'Level' => nnn) may be a better.

The wsdl2php isn't perfect and doesn't seem to handle the external xsds.



-- 
Richard Quadling
Twitter : EE : Zend
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY

-- 
PHP Soap Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




[Index of Archives]     [PHP Home]     [PHP Users]     [Kernel Newbies]     [PHP Database]     [Yosemite]

  Powered by Linux