특정 웹 사이트에서 응답을 받으려면 정확한 요청 문자열 인 HTTP/1.1을 제공해야합니다. 나는 telnet
으로 그 중 하나를 시도했다, 그것은 내가 원하는 응답을 준다 (리다이렉트,하지만 나는 그것을 필요로한다).LWP로 일반 문자열 요청 보내기
그러나 동일한 요청 문자열을 HTTP::Request->parse()
에게 줄 때 나는 단지 400 URL must be absolute
이라는 메시지 만받습니다.
내가 웹 사이트 인 경우 LWP
이 해당 메시지를 전달하는지 잘 모르겠다. 왜냐하면 말했듯이 응답은 telnet
으로 이루어 졌기 때문입니다.
my $req = "GET/HTTP/1.1\n".
"Host: www.example-site.de\n".
"User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1\n".
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\n".
"Accept-Language: en-us,en;q=0.5\n".
"Accept-Encoding: gzip, deflate\n".
"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\n".
"Keep-Alive: 115\n".
"Connection: keep-alive\n";
# Gives correct request string
print HTTP::Request->parse($req)->as_string;
my $ua = LWP::UserAgent->new(cookie_jar => {}, agent => '');
my $response = $ua->request(HTTP::Request->parse($req));
# 400 error
print $response->as_string,"\n";
누구든지 나를 여기에 도움이 될 수 있습니다
이
코드인가?
하지만 서버가 내 요청을 수락하지 않기 때문에 나는 그럴 수 없습니다. 위에 주어진 모양의 요청 만 허용합니다. – Lanbo
@ Scán - 서버가 이러한 유연성을 가지지 않는다면 소켓이나 직접적으로 [Net :: Telnet] (http://search.cpan.org/perldoc?Net)과 같은 저급 통신을 사용하는 것이 좋습니다. :: Telnet) – bvr
@ Scán : 서버가 요청을 수락하지 않는다는 것을 어떻게 알 수 있습니까? 'parse()'가 버그가 없다면 그것은해야합니다. – reinierpost