簡體   English   中英

通過Ruby發布時出錯。 郵遞員工作得很好

[英]Error when POST ing through Ruby. Postman works fine

嘗試發布到第三方網站時遇到一個奇怪的問題。

使用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請求與通過郵遞員發送POST請求時有所不同,我不知道是什么。

“ \\ r \\ n \\ r \\ n。:: Pagina de Errores ::。\\ r \\ n \\ r \\ n \\ r \\ n \\ r \\ nBODY {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 {font-style:bold ; font-size:14pt;} \\ r \\ n.error {font-style:bold; font-size:14pt; color:Red;} \\ r \\ n.datos {font-size:12pt;} \\ r \\ n .soluc {font-size:12pt;} \\ r \\ n \\ r \\ n \\ r \\ nLaaplicaciónha retornado el siguiente problema:\\ r \\ n

\\ r \\ n
\\ r \\ n \\ r \\ n
\\ r \\ n \\ r \\ n請注意以下事項:\\ r \\ n \\ r \\ n \\ r \\ n請優先關注新的要進行操作的問題,請務必堅持,在任何情況下,請使用網站管理員或其他任何網站管理員 。 function(str,index,chr){if(index> str.length-1)return str; return 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)|(str .charCodeAt(i + s)-65);},set_byte:function(str,i,b){var s =(i / 16)| 0; i =(i&15); s = s * 32; str = f5_cspm .setCharAt(str,(i + 16 + s),String.fromCharCode((b >> 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); return str;},wait_perf_data:function(){嘗試{var wp = window.performance.timing; if(wp.loadEventEnd> 0){var res = wp.loadEventEnd-wp.navigationStart; if(res <60001 ){var cookie_val = f5_cspm.set_latency(f5_cspm.f5_p,res); window.document.cookie ='f5avr1032272937aaaaaaaaaaaaaaaaaa ='+ encodeURIComponent(cookie_val)+'; path = /';} \\ nreturn;}} \\ ncatch(err) {return;} \\ nsetTimeout(f5_cspm.wait_perf_data,100); return;},go:function(){var chunk = window.document.cookie.split(/ \\ s *; \\ s * /); for(var i = 0; i“

您可能需要使用GET請求來獲取表。 服務器未響應POST請求,因為尚未將其配置為響應該請求。

解決方案是使用:

uri = URI('http://www.sunat.gob.pe/cl-at-ittipcam/tcS01Alias')
request = Net::HTTP::Get.new(uri)

而不是Post.new的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM