使用Delphi(我有Embarcadero®Delphi 10.1 Berlin版本24.0.22858.6822)無法使用Delphi將數據發佈到Web API服務方法
將數據簡單地發佈到C#WEB API Web服務時遇到了很多問題我的Web API服務控制器如下所示
正如您所見,我有一個InvoiceBreakdownParameters類,其中包含我的方法所需的參數。
的想法是此對象爲在我的Delphi應用程序JSON字符串被創建,然後這個被傳遞給方法在控制器
namespace STC.MicroServices.WebAPI.Controllers
{
using System.Web.Http;
public class InvoiceBreakdownParameters
{
public string SessionID { get; set; }
public int CustomerID { get; }
}
[RoutePrefix("api/CostCalculation")]
public class CostCalculationController : ApiController
{
[System.Web.Http.AcceptVerbs("POST")]
public string GetBreakdownForSessionObject(InvoiceBreakdownParameters parameters)
{
return "Data Obtained With parameters: " + parameters.SessionID + "CustomerID : " + parameters.CustomerID;
}
}
}
下面的代碼顯示瞭如何發佈到Web服務
var
HTTP: TIdHTTP;
RequestBody: TStream;
ResponseBody: string;
begin
HTTP := TIdHTTP.Create;
try
RequestBody := TStringStream.Create('{"SessionID":"sessionID","CustomerID":321,"StartDate":"02-01-2017","EndDate": "29-01-2017","MeterID":105,"InvoiceID":-282,"InvoiceNumber":"104637803"}',
TEncoding.UTF8);
HTTP.Request.ContentType := 'application/json';
ResponseBody := HTTP.Post('http://127.0.0.1:56638/api/CostCalculation/GetBreakdownForSessionObject/',
RequestBody);
memo1.Text := ResponseBody;
memo1.Text := memo1.Text + HTTP.ResponseText;
finally
RequestBody.Free;
HTTP.Free;
end;
end;
每當我嘗試把這個代碼,我得到
HTTP/1.1 500內部服務器錯誤。
這應該是如此簡單,但它浪費了我的時間!
我有兩個GetBreakdownForSessionObject和GetBreakdownForSessionObject試圖/
任何人都可以看到一些我錯過了什麼?
保羅
PS我已經編輯了JSON是德爾福友好,我仍然得到同樣的錯誤。這真令人沮喪!沒有辦法獲得更多信息嗎?我甚至不能從小提琴手那裏得到任何東西!然而
'{\"SessionID\":\"sessionID\",\"CustomerID\":1}"'
,您正在使用轉義字符在此字符串:
Delphi不在字符串中使用轉義字符,斜槓實際上被髮送到webservice ... – whosrdaddy
我已更正JSON並獲得相同的錯誤 – Paul
您可以嘗試向Indy組件添加代理。 127.0.0。1和端口8888(你可能還需要在提琴手中設置它,我忘記了)。這應該通過小提琴手,所以你至少可以看到你發送的東西。 – FLDelphi