在“GET”HTTP 請求中使用 JSON我正在努力與我們的數據檢索引擎進行交互。我可以使用這樣的 POST 請求完美地提交工作:
request = 新的 HTTP 請求(
網址(“http://fc8tdbitmapconvs07:11111/daas/”),
方法(“發布”),
Json(加載文本文件(ctfn))
);
數據=請求<<發送;
“數據”包含來自服務器的響應,一切正常。
------------------------------------------
但是,當我嘗試使用“GET”請求檢查正在運行的作業的狀態時,json 不會包含在對服務器的 HTTP 請求中:
嘗試#1:
request2 = 新的 HTTP 請求(
url( "http://fc8tdbitmapconvs07:11111/daas/status/" ),
方法(“獲取”),
headers( {"Content-Type:application/json"} ), // 添加自定義標頭
Json(加載文本文件(ctfn2))
);
數據 2 = 請求 2 << 發送;
嘗試#2
request2 = 新的 HTTP 請求(
url( "http://fc8tdbitmapconvs07:11111/daas/status/" ),
方法(“獲取”),
headers( {"Content-Type:application/json"} ) // 添加自定義標頭
);
request2 <數據 2 = 請求 2 << 發送;
在這兩種情況下,JSON 都無法加載。標頭信息可以很好地發送到服務器,但 JSON 應該在請求中的位置是空的。我錯過了什麼?
謝謝
回复:在“GET”HTTP 請求中使用 JSON此功能(在發送 JSON 時使用“GET”)應該在 JMP 15 中可用。
回复:在“GET”HTTP 請求中使用 JSON最後一件事(或 2)。工作編號等是否可以作為查詢字符串參數傳遞(或者甚至可以將 JSON 嵌入到請求標頭中)
和 2,一定要將帶有“正文”的 get 添加到願望清單中。這樣我們就可以跟踪並在它出現時通知您。
謝謝。
-布萊恩
回复:在“GET”HTTP 請求中使用 JSON拜倫,
感謝你能這麼快回复。我直接與 REST API 的開發人員合作,將 JSON 打包在 GET 請求中是他們記錄的請求數據的方式。您是正確的,規範不明確,並且在 GET 請求中打包 JSON 是某些 CS 課程中教授的內容。在這種情況下,我們的想法是傳入一個作業編號,它將返回一個指示作業尚未完成的代碼(輪詢和響應)或一個指示作業完成的代碼、數據文件名和包含這些文件的 zip 文件.如果您能在 JMP 15 中找到一些東西,那將非常有幫助。
回复:在“GET”HTTP 請求中使用 JSON閱讀 HTTP 規範後,我發現不鼓勵使用 GET 發送數據,服務器通常會忽略它。
我在 stackoverflow 上找到了這個討論,它鏈接到相關的 HTTP 規範。
這個說法正確嗎? HTTP GET 方法始終沒有消息體
它基本上對某些自定義 web 服務實現可能會使用它很重要,而且規範對此非常模糊。
如果仍然需要,也許我可以為 JMP 15 做點什麼。
還有其他途徑可以與此服務互動嗎?
回复:在“GET”HTTP 請求中使用 JSONJSON 是否嵌入在請求標頭中? (Dropbox、Onedrive 和許多其他公司都這樣做)
HTTP 請求中的 JSON 參數用在 POST/PATCH/PUT 中,其中內容以 JSON 內容類型發送。這是一個“提交”動作。
GET 是“讀取”的,參數是查詢字符串或嵌入在請求標頭中。
回复:在“GET”HTTP 請求中使用 JSON布萊恩布恩,
謝謝你的快速反應。 根據編寫的開發人員的說法
REST API JSON 是必需的。 這是 Python 中的工作版本
狀態信息=得到(
'http://fc8tdbitmapconvs07:11111/daas/status/',
json={'_id': '5cc311a97925b1000ce4fd54', 'include_complete':
真的}
).json()
>> 紅色的長數字是工作編號,當然會有所不同。 這
bit 在 python notebook 中運行或在 JMP 中運行時運行良好
以下JSL。 但是,如何讓它與 HTTP 請求協議一起工作?
謝謝!
---------------------------------------------- ---------------------------------------------- --------------------------
Python初始化();
Python 執行(
{X},
{status_info},
“
進口通行證
從 io 導入 BytesIO
從時間導入睡眠
將熊貓導入為 pd
從請求導入獲取,發布
狀態信息=得到(
'http://fc8tdbitmapconvs07:11111/daas/status/',
json={'_id': '5cc311a97925b1000ce4fd54', 'include_complete':
真的}
).json()
“
);
Python 術語 ();
回复:在“GET”HTTP 請求中使用 JSON“得到”
和“發布”
是兩種不同的 HTTP 請求方法( https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods )
“GET”通常從服務器讀取數據,而
“發布”通常將數據提交到服務器。
這些是在 JMP/JSL 之外定義的 Web 服務器/Web 服務
在您的第一個示例中,您將數據“發布”(也稱為提交)到“http://fc8tdbitmapconvs07:11111/daas/”並告訴服務CTFN是要使用的 JSON 內容。
在嘗試#1 中,目標是“獲取”- 獲取正在運行的作業的狀態。 我不確定服務是什麼,但如果端點是“http://fc8tdbitmapconvs07:11111/daas/status/”,那麼你會想要這樣的東西:
request2 = New HTTP Request(
url( "http://fc8tdbitmapconvs07:11111/daas/status/" ),
Method( "GET" )
);
data2 = request2 << Send;
因為您不會在 GET 中向服務器提交任何內容。
此外,“Content-Type:application/json”用於描述您發送的內容(在 GET 中不太合適,因為您正在接收數據並且可能被 Web 服務器忽略)
內容類型:標頭是您發送的內容(這些由 HTTP 請求自動設置)
接受:標頭是您告訴 Web 服務器您想要的內容。
request << Get MIME Type
會告訴你網絡服務器發送了什麼。 (大多數網絡服務器設置此項,但它可以為空)
請記住,在任何之後
request << Send
你可以做
request << Get Status; //this is the http status code
request << Get Status Message; //this is the message from the server
調查 Web 服務發出的任何錯誤消息。
HTH