BCB中使用IDHTTP組件發(fā)送JSON數(shù)據(jù)是非常常見的操作。首先,我們需要創(chuàng)建一個IDHTTP對象,并設置好對應的屬性,如下所示:
IdHTTP1 := TIdHTTP.Create; IdHTTP1.Request.ContentType := 'application/json'; IdHTTP1.Request.Accept := 'application/json';
在發(fā)送數(shù)據(jù)之前,我們需要將JSON數(shù)據(jù)轉換為字符串格式,并且設置好請求的URL地址。可以使用TJSONObject或TJSONValue等Delphi JSON庫中的類來創(chuàng)建JSON數(shù)據(jù),例如:
jsonObj := TJSONObject.Create; jsonObj.AddPair('name', '張三'); jsonObj.AddPair('age', 20); jsonString := jsonObj.ToString; url := 'http://localhost:8080/user';
接下來,我們可以使用IDHTTP的Post函數(shù)來發(fā)送JSON數(shù)據(jù),并且等待發(fā)送完成。在發(fā)送完成后,IDHTTP會返回一個字符串數(shù)據(jù),我們可以使用Delphi JSON庫來解析返回的JSON數(shù)據(jù),例如:
try responseStr := IdHTTP1.Post(url, TStringStream.Create(jsonString, TEncoding.UTF8)); responseJson := TJSONObject.ParseJSONValue(responseStr) as TJSONObject; if Assigned(responseJson) then begin // 處理返回的JSON數(shù)據(jù) end; except on E: Exception do begin // 處理異常 end; end;
需要注意的是,發(fā)送JSON數(shù)據(jù)時需要設置好ContentType和Accept的內容類型為application/json,這樣服務端接收到數(shù)據(jù)后會自動解析為JSON格式。同時也需要處理好發(fā)送和接收的異常情況,以保證程序的穩(wěn)定性。