繁体   English   中英

如何从HTTP POST请求(到另一个域)获取JSON

[英]How to get JSON back from HTTP POST Request (to another domain)

我正在尝试在网站上使用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

用户名= my_username&密码= MY_PASSWORD

响应

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

题:

我如何让它工作?

我尝试过jQuery,但它似乎与XSS有关。 实际的代码片段将不胜感激。

PS

我所寻找的只是C#中的WebClient

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

我正在使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM