為什麼我的代碼無法獲取API返回的數據?如何解決這個問題?
Python代碼無法獲取API返回數據的排查與解決
本文將分析一個使用requests
庫調用ip-api.com
API時返回空值的Python代碼案例,並提供解決方案。
問題描述
以下代碼嘗試使用POST請求獲取ip-api.com
的批量IP信息,但始終返回空值:
import random, requests, json ip = [ "49.104.25.257", "39.115.131.116" ] api = "http://ip-api.com/batch?fields=58898?lang=zh_cn" headers = { "user-agent": "mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/119.0.0.0 safari/537.36 edg/119.0.0.0", "content-type":"application/json" } ip = json.dumps(ip,ensure_ascii=False, indent=2) print(ip) resp = requests.post(url=api,data=ip,headers=headers) print(resp.status_code) print(resp.text) resp.close()
該API為免費版本,每分鐘限制45次請求,使用POST請求, fields=58898
用於指定返回字段。雖然直接在API網站上查詢IP沒有問題,但代碼卻始終返回空值,且requests
庫未報錯。
問題分析與解決方案
仔細檢查代碼和API文檔後,發現問題在於URL的查詢參數設置。原始代碼中,URL為:
api = "http://ip-api.com/batch?fields=58898?lang=zh_cn"
多個查詢參數之間應該使用&
連接,而不是連續使用?
。正確的URL應為:
api = "http://ip-api.com/batch?fields=58898&lang=zh_CN"
此外,建議將lang
參數設置為zh_CN
,以確保返回中文數據。 同時,HTTP Header中的User-Agent
和content-type
應該使用標準的命名方式,首字母大寫。
以下是修改後的完整代碼:
import requests import json ip = [ "49.104.25.257", "39.115.131.116" ] api = "http://ip-api.com/batch?fields=58898&lang=zh_CN" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0", "Content-Type": "application/json" } ip = json.dumps(ip, ensure_ascii=False, indent=2) print(ip) resp = requests.post(url=api, data=ip, headers=headers) print(resp.status_code) print(resp.text) resp.close()
通過修改URL和HTTP Header,即可成功獲取API返回數據。此例說明了細微的語法錯誤可能導致API調用失敗,強調了仔細檢查URL和參數的重要性。
以上是為什麼我的代碼無法獲取API返回的數據?如何解決這個問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

在C 中處理高DPI顯示可以通過以下步驟實現:1)理解DPI和縮放,使用操作系統API獲取DPI信息並調整圖形輸出;2)處理跨平台兼容性,使用如SDL或Qt的跨平台圖形庫;3)進行性能優化,通過緩存、硬件加速和動態調整細節級別來提升性能;4)解決常見問題,如模糊文本和界面元素過小,通過正確應用DPI縮放來解決。

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。

Laravel和Yii的主要區別在於設計理念、功能特性和使用場景。 1.Laravel注重開發的簡潔和愉悅,提供豐富的功能如EloquentORM和Artisan工具,適合快速開發和初學者。 2.Yii強調性能和效率,適用於高負載應用,提供高效的ActiveRecord和緩存系統,但學習曲線較陡。

要安全、徹底地卸載MySQL並清理所有殘留文件,需遵循以下步驟:1.停止MySQL服務;2.卸載MySQL軟件包;3.清理配置文件和數據目錄;4.驗證卸載是否徹底。

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。

交易所內置量化工具包括:1. Binance(幣安):提供Binance Futures量化模塊,低手續費,支持AI輔助交易。 2. OKX(歐易):支持多賬戶管理和智能訂單路由,提供機構級風控。獨立量化策略平台有:3. 3Commas:拖拽式策略生成器,適用於多平台對沖套利。 4. Quadency:專業級算法策略庫,支持自定義風險閾值。 5. Pionex:內置16 預設策略,低交易手續費。垂直領域工具包括:6. Cryptohopper:雲端量化平台,支持150 技術指標。 7. Bitsgap:
