我一直试图将这个问题弄清楚几天,而且我没有想法。我有以下代码向本地运行的应用程序的另一个实例发出POST
请求。
HTTP请求由以下代码初始化:
http_client = Net::HTTP.new(0.0.0.0, 1344)
http_client.use_ssl = true
http_client.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new("/some-path/?#some=params", {'Content-Type' => 'application/json'})
request.set_form_data(options[:post_data]) if options[:post_data]
request.body = options[:request_body] if options[:request_body]
response = http_client.request(request)
当我运行上述操作时,出现以下错误:
#<Net::HTTPBadResponse: wrong status line: "HTTP/1.1 1 CUSTOM">
考虑到这一点,似乎问题源于http_client.request(request)
的标题有一些问题。我尝试通过记录response.to_hash.inspect
来调试它,但我无法,因为它在我执行上述检查之前抛出异常。
我做了一些Googling,它提到我应该use_ssl = true
,我做了。仍然得到同样的错误。
url
是0.0.0.0
因为我在本地运行,1344
是端口。
答案 0 :(得分:0)
您应该在使用https / ssl时使用编码。试试这个:
uri = URI.encode("/some-path/?#some=params")
request = Net::HTTP::Post.new(uri, {'Content-Type' => 'application/json'})