যখন আমি আমার গ্রহণযোগ্যতা পরীক্ষার জন্য একটি নকল এসওএপি সার্ভার তৈরি করতে হয়েছিল তখন আমি রুবিতে এসওএপি ব্যবহার করেছি। আমি জানি না যে সমস্যাটি দেখার সবচেয়ে ভাল উপায় এটি ছিল তবে এটি আমার পক্ষে কাজ করেছিল।
আমি সার্ভারের জন্য সিনাত্রার রত্ন (আমি এখানে সিনট্রা সহ মজাদার শেষের পয়েন্টগুলি তৈরি করার বিষয়ে লিখেছি ) এবং এক্সএমএল স্টাফের জন্য নোকোগিরি ব্যবহার করেছি (এসওএপি এক্সএমএল নিয়ে কাজ করছে)।
সুতরাং, শুরুতে আমি দুটি ফাইল তৈরি করেছি (যেমন। ইন config.rb আমি wsdl ফাইল করা, কিন্তু একটি স্ট্রিং হিসেবে থাকে।
@@wsdl = '<wsdl:definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote.wsdl"
xmlns:xsd1="http://example.com/stockquote.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
.......
</wsdl:definitions>'
ইন responses.rb আমি প্রতিক্রিয়া যে সাবান সার্ভার বিভিন্ন পরিস্থিতিতে জন্য ফিরে হবে করা নমুনা আছে।
@@login_failure = "<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<LoginResponse xmlns="http://tempuri.org/">
<LoginResult xmlns:a="http://schemas.datacontract.org/2004/07/WEBMethodsObjects" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:Error>Invalid username and password</a:Error>
<a:ObjectInformation i:nil="true"/>
<a:Response>false</a:Response>
</LoginResult>
</LoginResponse>
</s:Body>
</s:Envelope>"
সুতরাং এখন আমি আপনাকে প্রকৃতপক্ষে সার্ভারটি কীভাবে তৈরি করেছি তা আপনাকে দেখাতে দিন।
require 'sinatra'
require 'json'
require 'nokogiri'
require_relative 'config/config.rb'
require_relative 'config/responses.rb'
after do
headers({
"Access-Control-Allow-Origin" => "*",
"Access-Control-Allow-Methods" => "POST",
"Access-Control-Allow-Headers" => "content-type",
})
content_type :json
end
get "/HAWebMethods/" do
case request.query_string
when 'xsd=xsd0'
status 200
body = @@xsd0
when 'wsdl'
status 200
body = @@wsdl
end
end
post '/HAWebMethods/soap' do
request_payload = request.body.read
request_payload = Nokogiri::XML request_payload
request_payload.remove_namespaces!
if request_payload.css('Body').text != ''
if request_payload.css('Login').text != ''
if request_payload.css('email').text == some username && request_payload.css('password').text == some password
status 200
body = @@login_success
else
status 200
body = @@login_failure
end
end
end
end
আমি আশা করি আপনি এটি সহায়ক পাবেন!