2011-02-08 18 views
3

我正在编写一个Sinatra应用程序,该应用程序将使用SendGrid发送电子邮件。他们提供了用于发送电子邮件的REST API,我想找出调用该API并获得响应的最佳方式。需要进行HTTP调用才能发送电子邮件并获得回复

调用的格式为:

https://sendgrid.com/api/[email protected]&api_key=secureSecret&[email protected]&toname=Destination&subject=Example%20Subject&text=testingtextbody&[email protected] 

的响应是XML格式的,我需要分析检查成功/失败。更多信息在http://sendgrid.com/documentation/ApiWebMail

完成打电话和解析退货的最佳方式是什么?

回答

5

在Net :: HTTP库中内置的Ruby有很多功能,但我喜欢HTTPClient,因为它有一套很好的simplified commands。内置的open-uri也非常方便,如果你不需要做太多的繁重工作。

对于解析HTML和XML,真的很难击败Nokogiri

Ruby的内置了一个名为URI的URL解析器,但我更喜欢Addressable,尤其是如果我打算乱搞查询参数。

下面是使用各种宝石的一些样品:

require 'addressable/uri' 
require 'nokogiri' 
require 'open-uri' 

如果你要处理的查询参数容易再寻址:: URI使得它方便:

url = 'https://sendgrid.com/api/[email protected]&api_key=secureSecret&[email protected]&toname=Destination&subject=Example%20Subject&text=testingtextbody&[email protected]' 
uri = Addressable::URI.parse(url) 
uri.query_values # => {"api_user"=>"[email protected]", "api_key"=>"secureSecret", "to"=>"[email protected]", "toname"=>"Destination", "subject"=>"Example Subject", "text"=>"testingtextbody", "from"=>"[email protected]"} 

你可以分配一个散列到一个变量,修改值,然后使用uri.query_values=重新分配它们。

如果你想要一个比HTTPClient更简单的接口,Ruby的Open-URI就像它来的一样简单。这将发出一个请求的URL,将结果返回给引入nokogiri解析的XML:

doc = Nokogiri::XML(open(uri.to_s)) 

返回的XML响应“sposed根据您链接到该网站看起来像这样:

returned_xml = '<result> 
    <message>success</message> 
</result>' 

因此,如果我们解析:

doc = Nokogiri::XML(returned_xml) 

我们可以得到在轻松的回应:

doc.at('message').inner_text # => "success" 

我无法显示完整的往返示例,因为我没有帐户,但应该让您滚动。

0

答案真的取决于你。你想用什么语言?什么框架(如果有的话)吸引你?如果您想将其作为一次性操作,则可以使用命令行中的CURL执行整个操作。或者你可以将CURL封装在Perl脚本中。或者你可以编写Python或Ruby。或者你可以编写Java或.Net。

或者您可以在填写适当的查询字符串参数后在浏览器中点击该URL。

每种主要语言都有很多XML解析器,所以这部分应该没问题。

+0

对不起,忘了说我正在构建应用程序。我更新了帖子,提供了更多信息 – 2011-02-08 06:11:34

相关问题