我正在尝试使用 ruby 和 net/http 发送发布请求,但无法传递 X-WSSE 标头。这是我的代码:
require 'net/http'
require 'uri'
uri = URI.parse("http://exampleurl.com")
http = Net::HTTP.new(uri.host)
request = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' =>'application/x-www-form-urlencoded'})
request['X-WSSE'] = {
'/' => "UsernameToken",
'Username' => "xxxxx",
'PasswordDigest' =>"xxxxxx",
'Nonce' => "xxxxxx",
'Created'=> "2016-06-12T01:24:13Z"
}
request['Authorization'] = {
'/' => "WSSE",
'realm' => "SDP",
'profile' =>"UsernameToken",
'type' => "AppKey"
}
request.set_form_data(
"from" => "sender",
"to" => "phone_number",
"body" => "12345",
)
response = http.request(request)
但是我总是收到错误 400(在 HTTP-Header 中找不到 X-WSSE),但是 curl 请求可以完美运行,你能帮帮我吗?
这是运行良好的 curl 请求
curl -X POST -H "Authorization: WSSE realm=\"SDP\", profile=\"UsernameToken\", type=\"AppKey\"" -H "X-WSSE: UsernameToken Username=\"xxxxxxx\", PasswordDigest=\"xxxxxxxxx=\", Nonce=\"xxxxxxx\", Created=\"2016-06-12T01:11:19Z\" " -H "Content-Type: application/x-www-form-urlencoded" -H "Cache-Control: no-cache" -d 'from=xxxxx&to=xxxxxx&body=1234' "http://api.oneapi.ru/sms/sendSms/v1"