【发布时间】:2017-08-31 08:03:53
【问题描述】:
我在尝试发布到第三方网站时遇到了一个奇怪的问题。
使用 Postman 进行测试时,我得到了正确的响应。但是,当通过 Ruby 代码尝试相同的 POST 时,我从网站上得到了一个神秘的 HTML 响应页面。 HTTP 响应代码为 200。只是网站的内部逻辑抛出了一个错误,如果我通过代码发送的请求与通过 Postman 发送的请求完全相同,则不会发生这种情况。
网址是:http://www.sunat.gob.pe/cl-at-ittipcam/tcS01Alias
在该网页显示的下拉框中选择月份(“mes”)和日期(“dia”)时,可以在浏览器中生成 POST。我还在浏览器控制台中检查了这种情况下的网络调用,并没有发现任何有趣的地方。
我的代码直接来自 Postman 生成的代码。我也尝试过具有相同错误响应的 HTTParty gem
require 'uri'
require 'net/http'
url = URI("http://www.sunat.gob.pe/cl-at-ittipcam/tcS01Alias")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["cache-control"] = 'no-cache'
request["content-type"] = 'application/x-www-form-urlencoded'
request["postman-token"] = '3ba1963c-2874-89c2-5e4d-e5be2c13a560'
request.body = "mes=05&anho=2016"
response = http.request(request)
puts response.read_body
正确的响应应该显示一个包含值的 HTML 表格。相反,我得到一个 HTML 错误页面。
任何解决问题的帮助将不胜感激。
编辑:HTML 响应并不真正相关,因为它是业务逻辑错误,而不是 HTTP 错误,但这里是:
问题是:这个内部逻辑错误被触发了,因为通过代码发送 POST 请求与通过 Postman 发送请求不同,我不知道是什么。
"\r\n\r\n.:: 错误页面 ::.\r\n\r\n\r\n\r\n身体 {font-style:normal;font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif;}\r\nH1 {font-size:16pt;color:Navy;}\r\nA {color:Navy;}\r\n.msg {字体样式:粗体;字体大小:14pt;}\r\n.error {字体样式:粗体;字体大小:14pt;颜色:红色;}\r\n.datos {字体大小:12pt;}\r\n.soluc {字体大小:12pt;}\r\n\r\n\r\nLa aplicación ha retornado el siguiente problema :\r\n
\r\n
\r\n\r\n
\r\n\r\nAcción a realizar :\r\n\r\ n\r\n支持新意 realizar la opacion, si el problema persiste, avisar a nuestro 网站管理员 o\r\ncomunicarse con Atenci\xF3n a Usuarios。\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n(function(){var f5_cspm={f5_p:'NEHEKPGFEEIGMFMPAJJJKDPGKDEIIJJIDBONLBJECPDLCCOBKCPONGDHNEIJOKPPCGMBMAGEAADECGEHHJAAAPLKAANKMODHPLFBCJKHMMCPOAKONNKGFELHONBMHBIO',setCharAt:function(str,index,chr){if(index>str.length-1)return str;返回 str.substr(0,index)+chr+str.substr(index+1);},get_byte:function(str,i){var s=(i/16)|0;i=(i&15);s=s*32;return((str.charCodeAt(i+16+s)-65)>4)+65 ));str=f5_cspm.setCharAt(str,(i+s),String.fromCharCode((b&15)+65));return str;},set_latency:function(str,latency){latency=latency&0xffff;str=f5_cspm.set_byte(str,40,(latency>>8));str=f5_cspm.set_byte(str,41,(latency&0xff)); str=f5_cspm.set_byte(str,35,2);返回 str;},wait_perf_data:function(){try{var wp=window.performance.timing;if(wp.loadEventEnd>0){var res=wp.loadEventEnd-wp.navigationStart;if(res
【问题讨论】:
-
你能发布html响应吗?通常这应该可以帮助您了解问题所在。
-
我能够重现它。您正在 Ruby 中执行 POST 请求,并且很可能在 Postman 中执行 GET 请求
标签: ruby-on-rails ruby post postman