这个HTTP POST请求有什么问题?

我试图使用Sulley模糊框架来模糊服务器。

我在Wireshark中观察下面的stream。 这个错误提到了JSONparsing的问题,但是,当我使用Google Chrome的Postman扩展尝试相同的HTTP POST请求时,它成功了。

任何人都可以请解释什么可能是错误的这个HTTP POST请求? JSON似乎有效。

POST /restconf/config HTTP/1.1 Host: 127.0.0.1:8080 Accept: */* Content-Type: application/yang.data+json { "toaster:toaster" : { "toaster:toasterManufacturer" : "Geqq", "toaster:toasterModelNumber" : "asaxc", "toaster:toasterStatus" : "_." }} HTTP/1.1 400 Bad Request Server: Apache-Coyote/1.1 Content-Type: */* Transfer-Encoding: chunked Date: Sat, 07 Jun 2014 05:26:35 GMT Connection: close 152 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"> <error> <error-type>protocol</error-type> <error-tag>malformed-message</error-tag> <error-message>Error parsing input: Root element of Json has to be Object</error-message> </error> </errors> 0 

    这是头文件中缺less的“Content-Length”属性,服务器认为它是强制性的,我认为这不应该是强制性的?

    将“Content-Length”添加到标题后,就像魅力一样。

    根据您的消息,它应该是POST请求正文之前的空白行。 你可以尝试添加一个吗?

    就像这样,服务器可能会看到这个请求没有任何内容和标题,如:

     { "toaster:toaster" : value 

    这将解释错误。

    也许是因为“Content-Type”标题。 如果服务器被configuration为只接受“application / json”,那么它可能会返回这个错误代码。 虽然它应该根据RFC2616返回“415 Unsupported Media Type”。

    这只是一个猜测,但您可以尝试将“Content-Type”标题更改为“application / json”。