首页 文章

如何从HTTP POST请求(到另一个域)返回JSON

提问于
浏览
1

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

Authenticated Sessions (摘自here

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

  • 网址:http://stage.amee.com/auth (this is not my domain)

  • 方法: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

问题:

我如何让它工作?

I tried jQuery, but it seems to have problem with XSS. 非常感谢实际的代码段 .

p.s.

我所寻找的只是在C#中的WebClient课程

2 回答

  • 2

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

  • 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
    

相关问题