Rails 3.2-允许来自.NET客户端应用程序的HTTP请求

本文关键字:应用程序 客户端 HTTP 请求 NET Rails | 更新日期: 2023-09-27 17:59:26

我使用RubyonRails开发了一个网站,产品信息存储在网站的数据库中。如何使用C#客户端应用程序检索有关特定产品的信息?我的产品模型按照以下路线设置:

resources :products

在C#中,我尝试了以下代码来检索ID为32的产品的产品信息:

HttpWebRequest request = WebRequest.CreateHttp("http://127.0.0.1:3000/products/32");
request.Method = "GET";
WebResponse response = request.GetResponse();
String text;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
    text = reader.ReadToEnd();
}

然而,这基本上只是将页面的整个HTML代码存储在"text"字符串中。如何仅检索XML或JSON格式的产品信息?我认为我需要对我的Rails应用程序进行一些更改,我发现了2011年的一个链接,建议使用RABL,但我不确定是否有更好的方法来创建API。

如有任何帮助,我们将不胜感激!

Rails 3.2-允许来自.NET客户端应用程序的HTTP请求

多亏了Gusman的帮助,我终于弄明白了!

我已经将我的C#代码更改为以下代码:

HttpWebRequest request = WebRequest.CreateHttp("http://127.0.0.1:3000/products/32.xml");
request.Method = "GET";
request.ContentType = "application/xml";
WebResponse response = request.GetResponse();
String text;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
    text = reader.ReadToEnd();
}

我在CreateHttp方法中为URL添加了".xml"扩展名。这样,就不会加载常规的HTML页面;将仅加载XML页面。这样做的结果是,我不得不在Rails中处理不同的格式。以下是我在产品控制器中的"显示"操作的结尾:

respond_to do |format|
  format.html
  format.xml { render :xml => @product }
end

这允许处理XML GET请求。我还没有完成POST部分,但我想它不会有太大的不同。

再次感谢所有的帮助!