Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用socket libfrary从http检索数据_Python_Sockets_Http Headers_Httprequest - Fatal编程技术网

在python中使用socket libfrary从http检索数据

在python中使用socket libfrary从http检索数据,python,sockets,http-headers,httprequest,Python,Sockets,Http Headers,Httprequest,我正在使用下面的代码从这个URL打印数据 我已经在windows 10.1系统上尝试了此代码。是否有任何修改,我需要转义(400错误的请求)在cmd的结果 #代码 导入套接字 mysock=socket.socket(socket.AF\u INET,socket.SOCK\u流) connect(('data.pr4e.org',80)) cmd='GEThttp://data.pr4e.org/romeo.txt HTTP/1.0\r\n\r\n'.encode() mysock.send

我正在使用下面的代码从这个URL打印数据

我已经在windows 10.1系统上尝试了此代码。是否有任何修改,我需要转义(400错误的请求)在cmd的结果

#代码

导入套接字
mysock=socket.socket(socket.AF\u INET,socket.SOCK\u流)
connect(('data.pr4e.org',80))
cmd='GEThttp://data.pr4e.org/romeo.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)
尽管如此:
data=mysock.recv(512)
如果len(数据)<1:
打破
打印(data.decode())
mysock.close()
输出:

C:\Users\Taufique\Desktop\p4e>pythonsocket1.py HTTP/1.1400错误请求 日期:2020年7月13日星期一格林尼治标准时间15:08:08 服务器:Apache/2.4.18(Ubuntu) 内容长度:308 连接:关闭 内容类型:text/html;字符集=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.18 (Ubuntu) Server at do1.dr-chuck.com Port 80</address>
</body></html>

400错误请求
错误的请求
您的浏览器发送了此服务器无法理解的请求。


位于do1.dr-chuck.com端口80的Apache/2.4.18(Ubuntu)服务器
首先,您的代码目前适用于我,尽管它是错误的。但许多服务器都试图绕过坏掉的客户端

这是您当前的HTTP请求(为清晰起见,添加了换行符)

这应该是您的HTTP请求

GET /romeo.txt HTTP/1.0\r\n
Host: data.pr4e.org\r\n
\r\n

有关更多信息,请参阅标准-这就是标准的用途。不要认为HTTP很简单,因为它都是基于文本的。实际上,它可能是一个复杂的协议。错误的代码(如您的)可能会在同一台或其他服务器上运行,如果它们不再处理这种特定类型的已损坏的代码,则以后可能会出现故障。

我犯了错误。代码如下

import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org',80))
cmd = 'GET http://data.pr4e.org/romeo.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)

while True:
    data = mysock.recv(512)
    if len(data) < 1:
        break
    print(data.decode(),end='')

mysock.close()
导入套接字
mysock=socket.socket(socket.AF\u INET,socket.SOCK\u流)
connect(('data.pr4e.org',80))
cmd='GEThttp://data.pr4e.org/romeo.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)
尽管如此:
data=mysock.recv(512)
如果len(数据)<1:
打破
打印(data.decode(),end='')
mysock.close()

给定的HTTP请求显示语法错误。SyntaxError:扫描字符串文字时下线。我在objectcmd中使用了这些请求。请再看一遍代码。@TaufiqueRahman:我只能猜测你做错了什么,因为你没有提供你实际做过的任何代码。
GET /romeo.txt HTTP/1.0\r\n
Host: data.pr4e.org\r\n
\r\n
import socket

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org',80))
cmd = 'GET http://data.pr4e.org/romeo.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)

while True:
    data = mysock.recv(512)
    if len(data) < 1:
        break
    print(data.decode(),end='')

mysock.close()