請求api接口所遇問題

1、NotImplementedError

import tornado.ioloop
import tornado.web
import tornado.httpserver

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, Nowamagic")


application = tornado.web.Application([(r"/", MainHandler)])
# httpServer = tornado.httpserver.HTTPServer(application)
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()

解決方法:

https://ask.csdn.net/questions/1054691

找到tornado/platform/asyncio.py 文件
在文件裏面加上

import sys
if sys.platform == 'win32':
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

2、json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

import json
import tornado.httpclient

http_client = tornado.httpclient.HTTPClient()
try:
    response = http_client.fetch("https://news-at.zhihu.com/api/4/news/latest")
    # print(response.body)
except httpclient.HTTPError as e:
    print("Error:", e)
http_client.close()

調用url出來的數據是bytes類型,想變成json類型,先轉換成str,然後再轉換成json發現有報錯

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

經過查找發現是,沒有轉換成 utf-8 編碼

data_str = str(data.decode(encoding='utf-8'))

轉換後即可

 

3. urllib2.Request(url,head,data) 內部參數

head :dict類型

data :str類型,同時,發起請求所含的必要參數應當在當中。如同postman中的body一樣。

4. urlopen()獲取頁面,返回類型爲bytes,需要用decode解碼,轉換成str類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章