无法从 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

无法使用 UTF8 编码转换 HttpResponseMessage

C# 从 HttpResponseMessage 读取

从 HttpResponseMessage 获取内容/消息