【问题标题】:HTTP post Json 400 ErrorHTTP 发布 Json 400 错误
【发布时间】:2016-09-27 19:12:26
【问题描述】:

我正在尝试将数据从我的微控制器发布到我的服务器。我需要从我的控制器发送原始 http 数据,这就是我在下面发送的内容:

POST /postpage HTTP/1.1
Host: https://example.com
Accept: */*
Content-Length: 18
Content-Type: application/json

{"cage":"abcdefg"}

我的服务器需要 JSON 编码而不是格式编码请求。

对于发送的上述请求,我从服务器收到 400 错误,HTTP/1.1 400 Bad Request

但是,当我尝试通过笔记本电脑通过 python 脚本将帖子发送到我的服务器时,我能够得到正确的响应。

import requests
url='https://example.com'
mycode = 'abcdefg'



def enter():
    value = requests.post('url/postpage', 
                             params={'cage': mycode})
    print vars(value)


enter()

谁能告诉我在上面发送的原始 http 数据中哪里可能出错?

【问题讨论】:

    标签: python json http-post


    【解决方案1】:

    HTTP 将标头之间的分隔符指定为单个换行符,并要求在内容之前有一个双换行符:

    POST /postpage HTTP/1.1
    Host: https://example.com
    Accept: */*
    Content-Length: 18
    Content-Type: application/json
    
    {"cage":"abcdefg"}
    

    如果您认为自己没有正确处理所有请求,请尝试查看 Python 发送的内容:

    response = ...
    request = response.request # request is a PreparedRequest.
    headers = request.headers
    url = request.url
    

    阅读docs for PreparedRequest了解更多信息。


    要传递参数,请使用以下 Python:

    REQUEST = 'POST /postpage%s HTTP/1.1\r\nHost: example.com\r\nContent-Length: 0\r\nConnection: keep-alive\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nUser-Agent: python-requests/2.4.3 CPython/2.7.9 Linux/4.4.11-v7+\r\n\r\n';
    query = ''
    for k, v in params.items():
        query += '&' + k + '=' + v # URL-encode here if you want.
    if len(query): query = '?' + query[1:]
    return REQUEST % query
    

    【讨论】:

    • 我遵循与您发布的相同的语法。只需在我的帖子中正确设置格式即可。已在帖子中更正。
    • @J F 那也行不通。是否有可能以某种方式查看 python 脚本实际发送的 http 原始数据,以便我可以在我的微控制器上复制该原始数据?
    • @J F 我实际上设法获得了 python 发送的内容(从服务器获得了成功回复)。它是 POST /postpage?cage=abcdefg HTTP/1.1\r\nHost: example.com\r\nContent-Length: 0\r\nConnection: keep-alive\r\nAccept-Encoding: gzip, deflate\r\nAccept :*/*\r\n用户代理:python-requests/2.4.3 CPython/2.7.9 Linux/4.4.11-v7+\r\n\r\n'。笼子:abcdefg 被附加到 Post URL,而不是作为数据发送。如何修改我在原始帖子中发布的http原始数据流以在帖子中附加cage:abcdefg?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    相关资源
    最近更新 更多