代码之家  ›  专栏  ›  技术社区  ›  Ludo

python3-如何克服python请求的最大url限制

  •  0
  • Ludo  · 技术社区  · 7 年前

    我有两个python应用程序使用web在不同的端口上运行。py。我正在尝试将30000-40000个字符长的JSON字符串从一个应用程序发送到另一个应用程序。JSON包含生成powerpoint报告所需的所有信息。我尝试使用以下请求启用此通信:

    import requests
    template = <long JSON string>     
    url = 'http://0.0.0.0:6060/api/getPpt?template={}'.format(template)
    resp= requests.get(url).text
    

    我注意到,在接收端,json被截断为803个字符,因此当它解码json时,我得到:

    json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 780 (char 779)
    

    我假设这必须限制URL请求的长度,无论是从哪个网站。py或请求,或者这是一个标准化的东西。有没有办法解决这个问题,或者我是否需要找到另一种方法来实现这两个python应用程序之间的通信。如果无法通过http发送如此长的JSON,请您提出替代方案。谢谢

    1 回复  |  直到 7 年前
        1
  •  5
  •   Community CDub    3 年前

    不要在URL中输入那么多数据。大多数浏览器将URL(包括查询字符串)的总长度限制在2000个字符左右,服务器限制在8000个字符左右。

    看见 What is the maximum length of a URL in different browsers? ,它引用了HTTP/1.1标准, RFC7230 :

    在实践中发现,请求行长度有各种特殊限制。建议所有HTTP发送方和接收方至少支持8000个八位字节的请求行长度。

    您需要在请求正文中发送那么多数据。使用POST或PUT作为方法。

    这个 requests 库本身对URL长度没有任何限制;它将URL发送到服务器,而不截断它。是的 您的服务器 它在这里截断了它,而不是给你一个 414 URI Too Long 状态代码。