1

我正在尝试在网站上使用 API,这是手册的一部分:

经过身份验证的会话(取自此处

要创建经过身份验证的会话,您需要从“/auth”API 资源请求 authToken。

  • 网址:http ://stage.amee.com/auth (这不是我的域名)
  • 方法:POST
  • 请求格式:application/x-www-form-urlencoded
  • 响应格式:application/xml、application/json
  • 响应码:200 OK
  • 响应正文:经过身份验证的用户的详细信息,包括 API 版本。
  • 额外数据:“authToken”cookie 和标头,包含应用于后续调用的身份验证令牌。

    参数:用户名/密码

例子

要求

POST /auth HTTP/1.1
接受:application/xml
内容类型:application/x-www-form-urlencoded

用户名=我的用户名&密码=我的密码

回复

HTTP/1.1 200 OK Set-Cookie: authToken=1KVARbypAjxLGViZ0Cg+UskZEHmqVkhx/Pm...;
authToken: 1KVARbypAjxLGViZ0Cg+UskZEHmqVkhx/PmEvzkPGp...==
内容类型: application/xml; 字符集=UTF-8

问题:

我怎样才能让它发挥作用?

我尝试了 jQuery,但 XSS 似乎有问题。实际的代码片段将不胜感激。

ps

我一直在寻找的是C# 中的WebClient

4

2 回答 2

2

如上所述,我正在使用 rails 从 stage.amee.com/auth 中提取相同的身份验证令牌 cookie。在创建和自定义返回 200 OK 的正确请求对象之前,我进行了一些实验,其中 authtoken 作为 cookie。我还没有找到读取请求对象的有效方法,否则我会发布它的样子。这是我来自应用程序控制器的 ruby​​ 代码

#define parameters
uri=URI.parse('http://stage.amee.com')
@path = '/auth'
@login_details = 'username=your_username&password=your_password'
@headers = {'Content-Type' => 'application/x-www-form-urlencoded', 'Accept' => 'application/json'}

#create request object
req = Net::HTTP.new(uri.host, uri.port)

#send the request using post, defining the path, body and headers
resp, data = req.post(@path, @login_details, @headers)

#print response details to console
puts "response code = " << resp.code
puts "response inspect = " << resp.inspect
resp.each do |key, val| 
  puts "response header key : " + key + " = " + val 
end 
puts "data: " + data
于 2010-06-25T15:00:59.423 回答
2

您需要将application/json放在Accept标头中,这告诉服务器您希望它以该格式响应 - 而不是 xml。

于 2009-06-24T21:56:56.897 回答