Web services for RoR
来源:互联网 发布:java相除保留两位小数 编辑:程序博客网 时间:2024/04/29 05:13
调用一个 Google 的 服务 是比较简单的
下面代码比较乱 是个沙盘测试
controller:
require 'net/http'
require 'soap/wsdlDriver'
def test
end
def lookup_who
who = [{:login => 'webservice',:pwd =>'123456'}]
who.each_with_index do |wh,index|
authentication = get_code_by_soap(wh)
end
end
def lookup_geocodes
# your list of places. In a real app, this would come from the database,
# and have more robust descriptions
places = [
{:address=>'555 Irving, San Francisco, CA',:description=>'Irving'},
{:address=>'1401 Valencia St, San Francisco, CA',:description=>'Valencia'},
{:address=>'501 Cole St, San Francisco, CA',:description=>'Cole'},
{:address=>'150 Church st, San Francisco, CA',:description=>'Church'}
]
# this loop will do the geo lookup for each place
places.each_with_index do |place,index|
# get the geocode by calling our own get_geocode(address) method
geocode = get_geocode place[:address]
# geo_code is now a hash with keys :latitude and :longitude
# place these values back into our "database" (array of hashes)
place[:latitude]=geocode[:latitude]
place[:longitude]=geocode[:longitude]
end
#place the result in the session so we can use it for display
session[:places] = places
#let the user know the lookup went ok
render :text=> 'Looked up the geocodes for '+places.length.to_s+
' address and stored the result in the session . . .'
end
def show_google_map
# all we're going to do is loop through the @places array on the page
@places=session[:places]
end
def testclient
Net::HTTP.start('192.168.1.2', 80) { |http|
response = http.post('/WebService2/Service1.asmx/authentication',
'login=webservice&pwd=123456')
puts response.body
}
render :text => "ok"
end
private
def get_code_by_soap(who)
x=ActionWebService::Client::Soap.new('authentication',"http://192.168.1.2/WebService2/Service1.asmx")
x
puts "OK"
#puts @results
end
def get_code(auth)
login = auth[:login].to_s
pass = auth[:pwd].to_s
puts "start call service"
# this is where we call the geocoding web service
server = XMLRPC::Client.new2('http://192.168.1.2/WebService2/Service1.asmx')
result = server.call2('authentication', 'webservice','123456')
#logger.debug "Geocode call: "+result.inspect
#return {:success=> true, :latitude=> result[1][0]['lat'],
# :longitude=> result[1][0]['long']}
puts "OK"
puts result
end
def get_geocode(address)
logger.debug 'starting geocoder call for address: '+address
puts address
# this is where we call the geocoding web service
server = XMLRPC::Client.new2('http://rpc.geocoder.us/service/xmlrpc')
result = server.call2('geocode', address)
logger.debug "Geocode call: "+result.inspect
return {:success=> true, :latitude=> result[1][0]['lat'],
:longitude=> result[1][0]['long']}
end
-------------------------------------------------------------------
view 中的内容
<html>
<head>
<title>Google maps example</title>
<!-- This includes the google maps API code.
You need to put your own key here -->
<script src="http://maps.google.com/maps?file=api&v=1&key=ABQIAAAAi4uuuQwsNrtFZiZKtsFk4BRoI9foflBXlzG4CGuVNeDA3TFtZBR9hGWDO8Mngn2R4HHEHJWe_OgKSw" type="text/javascript"></script>
<script type="text/javascript">
// helper function to create markers
function createMarker(point,html) {
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
// this is called when the page loads.
// it initializes the map, and creates each marker
function initialize() {
var map = new GMap(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.centerAndZoom(new GPoint(-122.443882, 37.769079), 5);
<%@places.each do |place|%>
var point = new GPoint(<%=place[:longitude]%>,<%=place[:latitude]%>);
var marker = createMarker(point,'<div><%=h place[:description]%></div>')
map.addOverlay(marker);
<%end%>
}
</script>
</head>
<body onload="initialize()">
fdafdsafdsfffffffffffffffffffffffdfsdfdf:
<!-- This is the element in which the map will be displayed. -->
<div id="map" style="width: 450px; height: 350px"></div>
</body>
</html>
上面是客户端 RUBYONRAILS 获取GOOGLE MAP 的服务
下面代码比较乱 是个沙盘测试
controller:
require 'net/http'
require 'soap/wsdlDriver'
def test
end
def lookup_who
who = [{:login => 'webservice',:pwd =>'123456'}]
who.each_with_index do |wh,index|
authentication = get_code_by_soap(wh)
end
end
def lookup_geocodes
# your list of places. In a real app, this would come from the database,
# and have more robust descriptions
places = [
{:address=>'555 Irving, San Francisco, CA',:description=>'Irving'},
{:address=>'1401 Valencia St, San Francisco, CA',:description=>'Valencia'},
{:address=>'501 Cole St, San Francisco, CA',:description=>'Cole'},
{:address=>'150 Church st, San Francisco, CA',:description=>'Church'}
]
# this loop will do the geo lookup for each place
places.each_with_index do |place,index|
# get the geocode by calling our own get_geocode(address) method
geocode = get_geocode place[:address]
# geo_code is now a hash with keys :latitude and :longitude
# place these values back into our "database" (array of hashes)
place[:latitude]=geocode[:latitude]
place[:longitude]=geocode[:longitude]
end
#place the result in the session so we can use it for display
session[:places] = places
#let the user know the lookup went ok
render :text=> 'Looked up the geocodes for '+places.length.to_s+
' address and stored the result in the session . . .'
end
def show_google_map
# all we're going to do is loop through the @places array on the page
@places=session[:places]
end
def testclient
Net::HTTP.start('192.168.1.2', 80) { |http|
response = http.post('/WebService2/Service1.asmx/authentication',
'login=webservice&pwd=123456')
puts response.body
}
render :text => "ok"
end
private
def get_code_by_soap(who)
x=ActionWebService::Client::Soap.new('authentication',"http://192.168.1.2/WebService2/Service1.asmx")
x
puts "OK"
#puts @results
end
def get_code(auth)
login = auth[:login].to_s
pass = auth[:pwd].to_s
puts "start call service"
# this is where we call the geocoding web service
server = XMLRPC::Client.new2('http://192.168.1.2/WebService2/Service1.asmx')
result = server.call2('authentication', 'webservice','123456')
#logger.debug "Geocode call: "+result.inspect
#return {:success=> true, :latitude=> result[1][0]['lat'],
# :longitude=> result[1][0]['long']}
puts "OK"
puts result
end
def get_geocode(address)
logger.debug 'starting geocoder call for address: '+address
puts address
# this is where we call the geocoding web service
server = XMLRPC::Client.new2('http://rpc.geocoder.us/service/xmlrpc')
result = server.call2('geocode', address)
logger.debug "Geocode call: "+result.inspect
return {:success=> true, :latitude=> result[1][0]['lat'],
:longitude=> result[1][0]['long']}
end
-------------------------------------------------------------------
view 中的内容
<html>
<head>
<title>Google maps example</title>
<!-- This includes the google maps API code.
You need to put your own key here -->
<script src="http://maps.google.com/maps?file=api&v=1&key=ABQIAAAAi4uuuQwsNrtFZiZKtsFk4BRoI9foflBXlzG4CGuVNeDA3TFtZBR9hGWDO8Mngn2R4HHEHJWe_OgKSw" type="text/javascript"></script>
<script type="text/javascript">
// helper function to create markers
function createMarker(point,html) {
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
// this is called when the page loads.
// it initializes the map, and creates each marker
function initialize() {
var map = new GMap(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.centerAndZoom(new GPoint(-122.443882, 37.769079), 5);
<%@places.each do |place|%>
var point = new GPoint(<%=place[:longitude]%>,<%=place[:latitude]%>);
var marker = createMarker(point,'<div><%=h place[:description]%></div>')
map.addOverlay(marker);
<%end%>
}
</script>
</head>
<body onload="initialize()">
fdafdsafdsfffffffffffffffffffffffdfsdfdf:
<!-- This is the element in which the map will be displayed. -->
<div id="map" style="width: 450px; height: 350px"></div>
</body>
</html>
上面是客户端 RUBYONRAILS 获取GOOGLE MAP 的服务
- Web services for RoR
- Web services for RoR 2
- Schema for Web Services
- RESTFul Web Services for DotNet
- Using gsoap for web services
- OWL Web Ontology Language for Services
- UDDI Explorer: Tool for searching web services
- Quality Management for Web Services @ JDJ
- Using gsoap for web services in symbian
- Setup Integration Broker for Web Services
- Developing Web Services with Open Source - A quick start for Web services technology
- 用Axis 1.1 for Java进行Web Services开发(1)
- 用Axis 1.1 for Java进行Web Services开发
- 用Axis 1.1 for Java进行Web Services开发(1)
- Java Web Services Developer Pack Installation Notes for Windows
- Using Web Services for Remoting over the Internet.
- Choosing among JCA, JMS, and Web services for EAI
- 用Axis for Java进行Web Services开发
- 快速生成100万不重复的8位编号
- Filter in JSP
- Linux解释器原理
- 表单提交时自动复制到剪贴板
- asp中类的使用笔记(1)
- Web services for RoR
- 无法显示隐藏文件和文件夹
- 海量数据库的查询优化及分页算法方案
- 专业数据交割工具RSSql在行李处理系统中的应用
- NET读取Excel数据为null的解决办法
- 在 ASP.NET 中实现会话状态的基础
- asp.net如何编写自定义控件
- 专访C++之父Bjarne Stroustrup
- WINDOWS资源管理器中“文件夹选项”丢失