code: 'HPE_INVALID_CONSTANT' 解析错误 parse error

8 篇文章 0 订阅

背景:
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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值