2010-02-05 1 views
4

Привет всем, я пытаюсь отправить простой запрос на защищенный wsdl и веб-службу с помощью ssl, сертификатов клиентов и базовой проверки подлинности.Help Soap Response с использованием базовых идентификаторов и сертификатов клиентов ssl

Вот код

require 'savon' 

client = Savon::Client.new "https://example.com/service?wsdl" 

client.request.http.ssl_client_auth(
:cert => OpenSSL::X509::Certificate.new(File.read("cert.pem")), 
:key => OpenSSL::PKey::RSA.new(File.read("key.pem")), 
:verify_mode => OpenSSL::SSL::VERIFY_NONE 
) 
client.request.basic_auth "User", "Password" 

response = client.AddCustomer |soap| 
soap.body = { 
:Channel => 0, 
:tel => '34567', 
:id => '597118125', 
:paymentMode => 1, 
:Alias => 666, 
:flag => 0 
} 

puts response.to_xml 

и рабочий испытания конверт с использованием SoapUI является:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mov="http://www.example.com/services/"> 
<soapenv:Header/> 
<soapenv:Body> 
<asd:AddCustomer> 
<Channel>0</idChannel> 
<tel>12344</msisdn> 
<id>59711</idIssuer> 
<paymentMode>1</paymentMode> 
<Alias>666</idAlias> 
<flag>0</flagPrivacy> 
</asd:AddCustomer> 
</soapenv:Body> 
</soapenv:Envelope> 

Когда я запускаю мой код, я получаю эту ошибку:

method_missing': undefined method `AddCustomer' for #<Savon::Client:0x8abec08> 
+0

Не ответ, но я не могу комментировать, и мне любопытно, почему вам пришлось понизить рубин до 1,8,7? У меня есть аналогичная проблема с получением самозаверяющего сертификата. – r3nrut

ответ

3

попробовать распечатывания следующее - или просто сделать это в irb

client.wsdl.soap_actions 

Я предполагаю, что вы увидите, что AddCustomer не один. Вероятно, он был изменен на нечто вроде add_customer.

+0

Вы были правы, но теперь, после перехода с AddCustomer на add_customer, я получил следующую ошибку: savon/soap.rb: 164: in input_array ': undefined method 'map' для" addCustomer ": String (NoMethodError) – acemutha

+0

Ok SOLVED! ! было по крайней мере 3 проблемы: - мой рубин был 1,9.1 и теперь составляет 1,8,7 - конечная точка в wsdl была неправильной - Мне пришлось использовать @inorder для отправки правильной последовательности ключей и значений. Спасибо за ваше время – acemutha

 Смежные вопросы

  • Нет связанных вопросов^_^