如何将对象附加到 URL

how to append an object to a URL

我需要能够将编码对象附加到 URI 以将其传递到 Web API 端点。

post中,作者正在创建一个对象:

var request = new Object();
request.SearchWindowStart = start.toISOString();
request.SearchWindowEnd = end.toISOString();
request.ServiceId = "5f3b6e7f-48c0-e511-80d7-d89d67631c44";
request.Direction = '0';
request.NumberOfResults = 10;
request.UserTimeZoneCode = 1;

然后他们将其附加到 URL:

var req = new XMLHttpRequest()
req.open("GET", clientUrl + "/api/data/v8.0/Search(AppointmentRequest=@request)?@request=" + JSON.stringify(request) , true);

我实际上无法修改 C sharp 代码,但是我有两个选择。第一个选项是将参数添加到 URL 我实际上不能修改 c# 代码但是我有两个选项。第一个选项是将参数添加到 URL 中,另一个选项是使用我想要的对象向请求中添加一个正文。

如果我提前知道对象的结构,我该如何将其包含在我的请求中?

您可以通过两种方式完成。

  1. 只需将具有值的对象的每个 属性 添加到 url 例如。 /search?property1=value1&property2=value2 当然每个值都应该url编码。

  2. 将整个对象序列化为json并通过post或get发送。看https://www.newtonsoft.com/json怎么做。发送请求可以通过简单的 WebClient class.

根据代码片段,您需要将对象序列化为 JSON。您可以使用已在其他答案中链接的 Json.Net。

以OP为例...

var request = new {
    SearchWindowStart = "some_start_value",
    SearchWindowEnd = "some_end_value",
    ServiceId = "5f3b6e7f-48c0-e511-80d7-d89d67631c44",
    Direction = '0',
    NumberOfResults = 10,
    UserTimeZoneCode = 1
};
//JSON.stringify(request)
var json = JsonConvert.SerializeObject(request);
var url = clientUrl + "/api/data/v8.0/Search(AppointmentRequest=@request)?@request=" + json;

从那里您应该可以根据需要使用 URL。