Aiohttp: Request.json() dan request.text() mengembalikan Tidak Ada

Dibuat pada 7 Apr 2018  ·  5Komentar  ·  Sumber: aio-libs/aiohttp

Singkat cerita

Sepertinya saya tidak bisa mendapatkan respons teks atau json dari objek respons.

Perilaku yang diharapkan

Saya akan dapat mengekstrak json melalui response.json()

Perilaku sebenarnya

response.json() memberikan tipe None
response.text() juga tidak memberikan apa-apa

Langkah-langkah untuk mereproduksi

Jalankan ini:

wordpress_url = "https://kominherstel.nl/wp-json/wp/V2/pages/"



async def fetch(session, url):
    async with session.get(url) as response:
        return response

async def main(wordpress_url):
    async with ClientSession() as session:
        response = await fetch(session, wordpress_url)
        print(await response.json())

loop = asyncio.get_event_loop()

loop.run_until_complete(main(wordpress_url))

Di browser " https://kominherstel.nl/wp-json/wp/V2/pages/ " akan dimuat.

Lingkungan Anda

aiohttp==2.3.10
OS: Ubuntu 16.04 LTS

invalid outdated

Komentar yang paling membantu

Anda tidak dapat mengambil isi respons setelah keluar dari manajer konteks async with session.get(...) .

Semua 5 komentar

Anda tidak dapat mengambil isi respons setelah keluar dari manajer konteks async with session.get(...) .

Terima kasih atas sarannya!
Saya mencoba yang berikut ini sebagai gantinya:

wordpress_url = "https://kominherstel.nl/wp-json/wp/V2/pages/"


async def main(url):
    async with ClientSession() as session:
        async with session.get(url) as response:
            print(await response.json())
            print(await response.text())

            print(response.text)
            print(response.json)

loop = asyncio.get_event_loop()

loop.run_until_complete(main(wordpress_url))

mengembalikan berikut ini:

<bound method ClientResponse.text of <ClientResponse(https://kominherstel.nl/wp-json/wp/V2/pages/) [200 OK]>
<CIMultiDictProxy('Date': 'Sat, 07 Apr 2018 20:41:13 GMT', 'Server': 'Apache', 'Vary': 'Cookie', 'X-Robots-Tag': 'noindex', 'Link': '<https://kominherstel.nl/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages', 'Access-Control-Allow-Headers': 'Authorization, Content-Type', 'Expires': 'Thu, 19 Nov 1981 08:52:00 GMT', 'Cache-Control': 'no-store, no-cache, must-revalidate', 'Pragma': 'no-cache', 'X-WP-Total': '8', 'X-WP-TotalPages': '1', 'Allow': 'GET', 'Set-Cookie': 'PHPSESSID=9u9an4n6tqt7hkp431ukf5qkk5; path=/', 'Upgrade': 'h2c', 'Connection': 'Upgrade', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8')>
>
<bound method ClientResponse.json of <ClientResponse(https://kominherstel.nl/wp-json/wp/V2/pages/) [200 OK]>
<CIMultiDictProxy('Date': 'Sat, 07 Apr 2018 20:41:13 GMT', 'Server': 'Apache', 'Vary': 'Cookie', 'X-Robots-Tag': 'noindex', 'Link': '<https://kominherstel.nl/wp-json/>; rel="https://api.w.org/"', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages', 'Access-Control-Allow-Headers': 'Authorization, Content-Type', 'Expires': 'Thu, 19 Nov 1981 08:52:00 GMT', 'Cache-Control': 'no-store, no-cache, must-revalidate', 'Pragma': 'no-cache', 'X-WP-Total': '8', 'X-WP-TotalPages': '1', 'Allow': 'GET', 'Set-Cookie': 'PHPSESSID=9u9an4n6tqt7hkp431ukf5qkk5; path=/', 'Upgrade': 'h2c', 'Connection': 'Upgrade', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/json; charset=UTF-8')>
>

2 print(await response.json()) pertama dan print(await response.text()) akan berfungsi. Dari dokumentasi (https://docs.aiohttp.org/en/stable/client_quickstart.html#json-response-content) tampaknya metode json() harus memunculkan pengecualian ketika gagal decoding. Namun, tidak ada pengecualian yang muncul sama sekali, dan jelas ada json di URL yang diambil.

Maaf, kode Anda tidak sesuai dengan keluaran terlampir.
Saya benar-benar merindukan perilaku apa yang Anda harapkan.

Akhirnya, saya menemukan masalah saat menjalankan kode di windows alih-alih Ubuntu. Di mesin windows saya, itu berjalan seperti yang saya harapkan. Masalahnya: Saya masih menjalankan python 3.5.2 dan aiohttp versi 2.3.10 di mesin Ubuntu saya. Buruk saya, saya harus memeriksa nomor versi sebelumnya: S

Utas ini telah dikunci secara otomatis karena tidak ada aktivitas terbaru setelah ditutup. Silakan buka [masalah baru] untuk bug terkait.
Jika Anda merasa ada poin penting yang dibuat dalam diskusi ini, harap sertakan kutipan tersebut ke dalam [edisi baru] itu.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat