- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一组位置点(纬度、经度和 created_at)需要批量发送。但是,当我使用 JsonConvert.SerializeObject()
它返回一个无法在服务器端点上解析的字符串。
var location_content = new FormUrlEncodedContent(new[] {
new KeyValuePair<string, string>("access_token", $"{Settings.AuthToken}"),
new KeyValuePair<string, string>("coordinates", JsonConvert.SerializeObject(locations))
});
var response = await client.PostAsync(users_url + bulk_locations_url, location_content);
结果如下所示:
{"access_token":"XX","coordinates":"[{\"created_at\":\"2018-03-27T21:36:15.308265\",\"latitude\":XX,\"longitude\":XX},{\"created_at\":\"2018-03-27T22:16:15.894579\",\"latitude\":XX,\"longitude\":XX}]"}
坐标数组作为一个大字符串出现,因此看起来像 :"[{\"created_at\":
什么时候应该是:[{"created_at":
.
所以,服务器期待这样的事情:
{"access_token":"XX","coordinates":[{\"created_at\":\"2018-03-27T21:36:15.308265\",\"latitude\":XX,\"longitude\":XX},{\"created_at\":\"2018-03-27T22:16:15.894579\",\"latitude\":XX,\"longitude\":XX}]}
Location.cs
public class Location
{
public DateTime created_at { get; set; }
public double latitude { get; set; }
public double longitude { get; set; }
[PrimaryKey, AutoIncrement, JsonIgnore]
public int id { get; set; }
[JsonIgnore]
public bool uploaded { get; set; }
public Location()
{
}
public Location(double lat, double lng)
{
latitude = lat;
longitude = lng;
uploaded = false;
created_at = DateTime.UtcNow;
Settings.Latitude = latitude;
Settings.Longitude = longitude;
}
public Location(Position position) : this(position.Latitude, position.Longitude) {}
}
有没有办法让键值对成为<string, []>
?我还没有找到一个不使用 <string, string>
的例子一对。
对于 json 数据数组,HttpClient 是否有另一种解决方法?
最佳答案
构建模型然后在发布前序列化整个东西
var model = new{
access_token = Settings.AuthToken,
coordinates = locations
};
var json = JsonConvert.SerializeObject(model);
var location_content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(users_url + bulk_locations_url, location_content);
关于c# - 使用 HTTPClient PostAsync 发送数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49567926/
我正在使用控制台应用程序进行容量测试,在这些测试中,我调用了我在 API 中创建的 JobTitles 路由,在本例中是处理该路由的 Controller 。 对于我正在使用的 Post 函数,我使用
这个问题在这里已经有了答案: await vs Task.Wait - Deadlock? (3 个答案) 关闭 7 年前。 我有下一部分代码: using (var client = new Ht
我正在尝试在 dot-net 核心中将控制台应用程序作为窗口服务运行,并能够创建、启动、停止和删除该服务。 我在应用程序中使用 PostAsync() 方法,但问题是此方法在控制台应用程序中运行良好,
使用 HttpClient 时是否有保证取消帖子的方法?我目前有一个调用 do PostAsync,我试图使用 cancellationToken 取消它,但它似乎实际上并没有中止/停止操作。我仍然可
在我的 Xamarin 表单应用程序中 我正在尝试将 Json 字符串发布到我的网络服务,即 RestFul API 当我使用以下代码时: public static async Task SaveR
我正在使用 xUnit 和 Moq 编写测试用例。 我正在尝试模拟 HttpClient 的 PostAsync(),但出现错误。 下面是用于模拟的代码: public TestADLS_Ope
我注意到,使用 Bot Framework 和 Telegram channel 时,像 :) 这样的笑脸不会转换为表情符号。 不过,其实很简单,我们只需要将 :) 改成 :smile: 就会出现一个
我一直在尝试使用 POST 将图像上传到我的网站,图像被转换为 base64 以进行传输。 不幸的是,我偶然发现了我的 Siverlight 应用程序的错误。我已经成功获取了图片的base64字符
如果我在 Windows 机器上运行我的 Web 应用程序,一切正常。当我在 Linux (CentOS) 机器上运行此应用程序时,尝试发送 Post 请求时出现以下异常: System.Net.Ht
我正在调用 API Post 方法,但是,我不确定自己做错了什么,但 API 中的值始终为 null。我调用 API 的方法如下。当我点击它时,我可以看到 Ids 是具有 5 个值的整数列表。 pri
我有下面的方法将数据发布到 URL public async Task PostAsync(string method, string data, bool isJson = true, lo
我有一个 web Api,它有一个到 Startup.Auth 中的登录 token 设置的路由,如下所示: PublicClientId = "self"; OAut
这是一个 Windows 窗体应用程序。我正在使用秒表来测量此操作的时间: HttpResponseMessage response = await httpClient.PostAsync(EndP
在一些基准测试之后,我意识到每次我启动我的应用程序时,第一个请求都会比下一个请求花费更多的时间。第一个平均 500ms,下一个平均 120ms。 我在 HttpClient 中设置了 cookie,并
我是 C# 的新手。我正在使用 await 关键字来调用 HttpClient 的 API。 static async Task CreateChannel(string channelName) {
我已经看到很多关于此的问题,并且都指向我使用 ConfigureAwait(false),但即使这样做之后,它仍然没有返回任何响应。当我运行调试器时,代码在 PostAsync 处停止并且不会继续我的
我有一个 api 调用另一个。 这是我的代码,它似乎在世界的另一端导致 ModelState.IsValid = false。 var baseUri = new Uri("http://localh
我正在尝试使用 HttpClient 的 PostAsync 登录网站;然而,它总是失败,当我使用 WireShark 跟踪连接时,我发现它发布的数据不正确 代码 var content = new
我的问题与此非常相似question这里。我有一个 AuthenticationService 类,它生成一个 HttpClient PostAsync() 并且当我从 ASP 项目运行它时从不返回结
我正在使用 Microsoft 的 botframework。到目前为止,一切似乎都很好,但我无法一次性发布多个答案。 我尝试了几次将文本/字符串和消息作为参数的 context.PostAsync(
我是一名优秀的程序员,十分优秀!