我有一个 .Net XML 网络服务,我需要一个简单的 Sinatra 应用程序来调用它。真的只是转发而已。假设我让我的 sinatra.myapp.com/mywebservice.asmx 捕获请求,然后将其与所有传入参数一起扔到 www.myoldapp.com/mywebservice.asmx,获取响应,然后让 sinatra.myapp.com 返回结果给客户。
在这种情况下,我们无法使用域别名,因为我们相信 sinatra.myapp.com 端点的消费者能够跟踪重定向。
我有一个 .Net XML 网络服务,我需要一个简单的 Sinatra 应用程序来调用它。真的只是转发而已。假设我让我的 sinatra.myapp.com/mywebservice.asmx 捕获请求,然后将其与所有传入参数一起扔到 www.myoldapp.com/mywebservice.asmx,获取响应,然后让 sinatra.myapp.com 返回结果给客户。
在这种情况下,我们无法使用域别名,因为我们相信 sinatra.myapp.com 端点的消费者能够跟踪重定向。
我就是这样做的:
require 'sinatra'
require 'net/http'
require 'rexml/document'
get '/mywebservice.asmx' do
query_string = ''
params.each { |k, v| query_string += k + '=' + v + '&' }
http = Net::HTTP.new('www.myoldapp.com', 80)
response = http.get('mywebservice.asmx?' + query_string)
xml = REXML::Document.new(response.body)
end
您现在可以对 REXML 对象做任何您想做的事情。
我不能告诉你如何使用它,因为我自己并不掌握它,但你可以在互联网上找到很多谈论它的资源。