запрос не имеет длины контента - PullRequest
0 голосов
/ 16 декабря 2018

кажется, что время от времени я получаю плохой ответ, я вижу, что в заголовке content-legth: 0, но кажется, что я получаю только длину содержимого в заголовке, когда это плохой ответ, не так ливсегда получать длину содержимого в ответе?вот мой код

import requests
import json
from pprint import pprint
import time 

def read_OSRS_GE(item_id):
    api_url="http://services.runescape.com/m=itemdb_oldschool/api/catalogue/detail.json?item="
    # get all items and put em in file
    # print(api_url+str(item_id))
    r=requests.get(api_url+str(item_id))
    print(r)
    header=r.headers
    print(header)
    data=r.json()
    # print("dataid",data["item"]["id"])
    # pprint(data)
    row=[]
    row.append(int(time.time()))
    row.append(data["item"]["id"])
    row.append(data["item"]["name"])
    row.append(data["item"]["current"]["price"])
    row.append(data["item"]["members"])
    print(row)
    return
def get_items():
    api_url="https://rsbuddy.com/exchange/summary.json"
    #get all items and put em in file
    # print(api_url)
    r=requests.get(api_url)
    data=r.json()
    # pprint(data)
    counter=1
    for key, value in data.items():
        print("item id:",key)
        print("call:",counter)
        read_OSRS_GE(key)

        counter+=1

    return
get_items()

1 Ответ

0 голосов
/ 16 декабря 2018

Вы можете получить размер необработанного ответа в байтах от len(r.content)

. Ответ может не обязательно иметь установленный заголовок Content-Length.

Ответ из предоставленного вами примерав настоящее время содержит поле Transfer-Encoding.Данные отправляются в виде последовательности кусков, поэтому отправляется заголовок Content-Length.

MDN: кодирование передачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...