code: 'HPE_INVALID_CONSTANT' 解析错误 parse error

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a1368783069/article/details/87386853

背景:
server: python http.server 见 https://blog.csdn.net/a1368783069/article/details/87359881
client : node.js request

client 在请求 server时,返回结果解析错误。
server.py

import json
import http.server
import socketserver
from urllib.parse import urlparse, parse_qs

PORT = 7700

class HandleServer(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
        print(self.client_address)
        print(self.headers)
        query = urlparse(self.path)
        returncode, msg = 0, "success"
        if query.path.strip("/") == urlparse("/parse/").path.strip("/") :
            params = parse_qs(query.query)
            q = params("q",[""])[0]
        else:
            returncode, msg = 1000, "url path should be parse"
        output = {"returncode": returncode, "message": msg}
        self.wfile.write(json.dumps(output).encode("utf-8"))


handler = HandleServer

with socketserver.TCPServer(("", PORT), handler) as httpd:
    print("server starting..", PORT)
    httpd.serve_forever()

client.js

var request = require('request');
var qs = require('querystring')

var tempData = "test"

var data =  qs.stringify({q: tempData })
request({
  url: 'http://127.0.0.1:7700/parse?' +data,
  method: 'GET',
}, function(error, resp, body){
  console.log(error);
  console.log(resp)
  console.log(body);
});

启动服务 python3 server.py
执行请求 node client.js
然后就报错 :

{ Error: socket hang up
    at createHangUpError (_http_client.js:313:15)
    at Socket.socketOnEnd (_http_client.js:416:23)
    at Socket.emit (events.js:187:15)
    at endReadableNT (_stream_readable.js:1090:12)
    at process._tickCallback (internal/process/next_tick.js:63:19) code: 'ECONNRESET' }

根据查到的资料,是由于 server 再返回的数据头部 : Content-type 为 json。 应该改为: text/html
即,在server.py 中的 self.wfile.write 这行前面加上:

self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()

同时, Content-type 的开头为大写, 而不是 content-type 。

参考资料:
http server. empty reply on GET request with not url encoded GET-param #6295
https://github.com/nodejs/node/issues/6295

猜你喜欢

转载自blog.csdn.net/a1368783069/article/details/87386853
今日推荐