无法从 HttpResponseMessage 中的发布请求中获得响应
Posted
技术标签:
【中文标题】无法从 HttpResponseMessage 中的发布请求中获得响应【英文标题】:Failure to getting response from post request in HttpResponseMessage 【发布时间】:2020-04-20 21:06:01 【问题描述】:我阅读了很多问题并测试了很多代码,但我无法解决我的问题。 我想在asp控制器中调用rest API(用php代码编写)。
我使用邮递员应用程序测试了我的网络服务,并从网络服务获得正确响应。但是我无法通过asp请求得到正确的答案。
我的问题:我得到响应的状态码 200(在 asp 控制器中)但是 web 服务上的指令没有执行(例如:不要注册用户)。我在哪里可以找到问题并获得答案中的数据?
public async Task registerInShop()
try
ShopUserModel model = new ShopUserModel()
user_login = "ff",
user_pass = "v12315",
user_nicename = "",
user_url = "",
user_registered = "",
user_activation_key = "",
user_status = 0,
display_name = "ff",
;
JsonResult json = Json(model, JsonRequestBehavior.AllowGet);
using (var client = new HttpClient())
client.BaseAddress = new Uri("domainurl/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
HttpResponseMessage response = await client.PostAsJsonAsync("shopktphp/register.php", json.Data);
response.EnsureSuccessStatusCode();
if (response.IsSuccessStatusCode)
// Get the URI of the created resource.
Uri returnUrl = response.Headers.Location;
var res = response.Content;
Console.WriteLine(returnUrl);
catch (Exception ex)
Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(ex));
【问题讨论】:
你在 Postman 的 header 标签中有什么? 内容类型:application/json 我没有看到您正在通过代码发送用户电子邮件。它是非强制性的吗? no .user-email 是可选的。我将用户电子邮件添加到 json 并发送。但不要接受,就像以前一样 【参考方案1】:我成功找到了我的问题的答案。我只更改基地址的 URI 并通过以下方式设置:“domainurl/shopktphp/” 并通过“register.php”设置 Post json 异步
client.BaseAddress = new Uri("domainurl/shopktphp/");
HttpResponseMessage response = await client.PostAsJsonAsync("register.php", json.Data);
【讨论】:
以上是关于无法从 HttpResponseMessage 中的发布请求中获得响应的主要内容,如果未能解决你的问题,请参考以下文章
无法使任务 <HttpResponseMessage> “等待”
C# 无法通过 HttpResponseMessage 获取 HTTP 返回代码
如何确定是不是使用 HttpClient 从缓存中完成了 HttpResponseMessage