0
我目前正在为我的Ruby应用程序开发一些POST请求,并收到与wrong status line
有关的错误。综观文档,如果下面的正则表达式匹配的异常将会被抛出:Ruby HTTP的read_status_line是做什么的?
def read_status_line(sock)
str = sock.readline
m = /\AHTTP(?:\/(\d+\.\d+))?\s+(\d\d\d)(?:\s+(.*))?\z/in.match(str) or
raise Net::HTTPBadResponse, "wrong status line: #{str.dump}"
m.captures
end
我很好奇的正则表达式实际上是试图匹配?
/\AHTTP(?:\/(\d+\.\d+))?\s+(\d\d\d)(?:\s+(.*))?\z/in.match(str)
喔!我正在检查'sock.readline',并且得到以下结果'“HTTP/1.1 1 CUSTOM”',它与该正则表达式不匹配。 – theGreenCabbage
按照规范,状态代码应该以正则表达式中的NNN或'\ d \ d \ d'表示。 '1'无效。你正在处理一个不好的HTTP实现。如果你真的被卡住了,需要这些代码来处理那个可怕的破坏的服务器,也许可以用一个测试与'\ d +'相反的方法来修补这个方法。丑陋,但有时是必要的。 – tadman
好的,谢谢。现在我必须弄清楚为什么我得到'HTTP/1.1 1 CUSTOM'。你有什么想法吗? – theGreenCabbage