1

我正在尝试使用 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"
4

0 回答 0