我有两个问题:
我不能不在 Ruby 中发布到 MS 的服务器。
我无法从 MS 的服务器获得结果。
以下是详细内容。
这是我的红宝石代码:(xxxxxx 是我的 client_secret)
require "net/http"
base_url = URI("https://datamarket.accesscontrol.windows.net/v2/OAuth2-13")
params = {:client_id => :woki,
:client_secret => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
:scope => "http://api.microsofttranslator.com",
:grant_type => "client_credentials"}
res = Net::HTTP.post_form(base_url, {})
File.open("token", "w").write res.body
我希望使用此代码来获取我的访问令牌。
但是,每次发生错误时:
rescue in rbuf_fill': Timeout::Error (Timeout::Error)
因此,我改为使用 bash 命令 curl 发布,并返回响应:
{"token_type":"http://schemas.xmlsoap.org/ws/2009/11/swt-token-profile-1.0","access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","expires_in":"599","scope":"http://api.microsofttranslator.com"}
然后,我想使用我的访问令牌将一个英文单词翻译成中文,但仍然失败。以下是我的代码:
#!/bin/bash
clear
curl -H "Authorization: Bearer xxxxx" -d "appId&text=apple&to=zh-CHS&from=en&maxTranslations=10" http://api.microsofttranslator.com/V2/Http.svc/GetTranslations
其中 xxxxx 是直接从上面的访问令牌复制的,其内容类似于“http%3a%2f%2f”。
根据http://msdn.microsoft.com/en-us/library/ff512417。我认为没有错。
但是,我只得到
Error Status Code: 'InternalServerError'
Details: The server encountered an error processing the request. Please see the server logs for more details.
谁能告诉我问题出在哪里?