- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经看到很多关于此的问题,并且都指向我使用 ConfigureAwait(false),但即使这样做之后,它仍然没有返回任何响应。当我运行调试器时,代码在 PostAsync 处停止并且不会继续我的代码。我在这里做错了什么吗?跟我通过 HTTPS 调用 API 有关系吗?
代码如下:
public async static Task<PaymentModel> AddAsync(Card card)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:", "hidden"))));
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
var cardJson = JsonConvert.SerializeObject(card);
var postRequest = new StringContent(cardJson, Encoding.UTF8, "application/json");
var request = await client.PostAsync(new Uri("https://sample-3rd-party-api/api/endpoint/here"), postRequest).ConfigureAwait(false);
var content = await request.Content.ReadAsStringAsync().ConfigureAwait(false);
}
编辑:
作为对以下评论的回应,代码包含在使用处理程序单击按钮时调用的方法 AddAsync(Card card) 中:
public async void OnExecute(object sender, EventArgs args)
{
//some code here
payment = await PaymentModel.AddAsync(card).ConfigureAwait(false);
}
编辑 2:我尝试对 API 执行 ping 操作,但它返回的请求超时,但当我使用 Postman 尝试时,一切正常(API 只是一个对所有人开放的沙箱,因此可以分享 this ):
编辑 3:
我认为问题在于我没有 SSL 证书来访问 API。我有一个连接到同一 API 的 PHP 服务器,我必须将 SSL_VERIFYPEER 设置为 false 才能访问它(别担心,我现在添加了一个 cacert,所以它再次为 true)。这里会发生同样的问题吗?如果是这样,我该怎么做才能为我的 xamarin 表单应用程序创建有效证书
最佳答案
你可以用这个
var json = JsonConvert.SerializeObject(card);
using (var client = new HttpClient())
{
var t = await client.PostAsJsonAsync("https://sample-3rd-party-api/api/endpoint/here", json);
Response R =JsonConvert.DeserializeObject<Response>((JsonConvert.DeserializeObject(t.Content.ReadAsStringAsync().Result.ToString())).ToString());
}
关于c# - HttpClient PostAsync 不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50075135/
我正在使用控制台应用程序进行容量测试,在这些测试中,我调用了我在 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(
我是一名优秀的程序员,十分优秀!