当我发出http请求时,我收到了一个奇怪的错误。
请求代码是这样的;
purchase_xml = Transaction.yo_xml(api_username,api_password,@total, account, merchant_reference)
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.body = purchase_xml
response = http.request(request)
result = Hash.from_xml(response.body)
yo_xml看起来像这样;
def self.yo_xml(api_username, api_password,amount, account, transaction_id)
xml = "<?xml version=1.0 encoding=UTF-8?><AutoCreate><Request><APIUsername>#{api_username}</APIUsername>
<APIPassword>#{api_password}</APIPassword><Method>acdepositfunds</Method><Amount>#{amount}</Amount>
<Account>#{account}</Account><Narrative>Purchase of SMS</Narrative><InternalReference>#{transaction_id}</InternalReference>
<ExternalReference>#{transaction_id}</ExternalReference><ProviderReferenceText>Thank you for using Skyline SMS</ProviderReferenceText>
</Request></AutoCreate>"
return xml
end
我收到此错误;
Net::HTTPBadResponse
wrong status line: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">"
提出了这一行
response = http.request(request)
感谢任何帮助。
答案 0 :(得分:16)
在尝试通过https访问资源之前,我遇到了类似的错误。你没有提到是否是这种情况,但如果是这样的话,http.use_ssl = true
之前设置post
可能会解决它。
答案 1 :(得分:3)
这就是我开始工作的方式
purchase_xml = Transaction.yo_xml(api_username,api_password,@total, account, merchant_reference)
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.body = purchase_xml
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = http.request(request)
result = Hash.from_xml(response.body)