C# 从 HTTP POST 请求获取答案

标签 c# .net post httpclient

我正在进行 mail.ru 自动注册。为此,我用 C# 发送此 POST 请求:

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;

namespace MailCheck
{
    class Program
    {
        static void Main(string[] args)
        {
            ///creating a client
            HttpClient webclient = new HttpClient();

            ///sending a POST request
            var response = webclient.PostAsync("https://account.mail.ru/api/v1/user/signup", new FormUrlEncodedContent(new Dictionary<string, string>{ 
                {"extented", "true"},
                { "more_password_strength", "1" },
                { "context", "signup" },
                { "from", "main" },
                { "sent_me_ads", "true" },
                { "name", Convert.ToString(new Dictionary<string, string> { { "first", "John" }, {"last", "Genry"} }) },
                { "birthday", Convert.ToString(new Dictionary<string, int> { { "day", 4 }, {"month", 5}, {"year", 1995} }) },
                { "login", "pointlesst23" },
                { "domain", "mail.ru" },
                { "password", "Tim147890" },
            }));

            ///getting a Result
            var responseString = response.Result;
            Console.WriteLine(responseString);


        }
    }
}

问题是,我得到这个答案:

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
  Server: nginx
  Date: Mon, 01 Jun 2020 11:12:11 GMT
  Transfer-Encoding: chunked
  Connection: close
  X-XSS-Protection: 1; mode=block; report=https://cspreport.mail.ru/xxssprotection
  X-Host: fau37.m.smailru.net
  X-Host: fau37.m.smailru.net
  X-Content-Type-Options: nosniff
  X-Content-Type-Options: nosniff
  X-ComScore: pageview_candidate
  Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  Strict-Transport-Security: max-age=15768000; includeSubDomains; preload
  X-Frame-Options: DENY
  Vary: Referer
  Content-Type: application/json; charset=utf-8
  Expires: Thu, 01 Jan 1970 00:00:01 GMT
}

但是,我需要另一个站点答案(我已经发送了这个 POST 请求,但是是用 python 发送的)。因为其中有一个验证码 ID {"body":"mOlWAphGRBZWAIv7"}完整需要的答案是:

{"body":"mOlWAphGRBZWAIv7","email":null,"status":200,"htmlencoded":true}

有人能解决这个问题吗?)

最佳答案

使用此代码

 var responseString = response.Result.Content.ReadAsStringAsync().Result;

作为

var responseString = response.Result;

但我建议使用等待/异步模式

 var responseString =await response; 
 var bodyResponseString =await responseString.Content.ReadAsStringAsync() ;

关于C# 从 HTTP POST 请求获取答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62130954/

相关文章:

c# - Web 应用程序配置设置 - 最佳实践

c# - LAN 内的 ASP.NET 5 Kestrel 连接

c# - 部署 IE9 扩展

java - 在 java 中直接从 URL 将文件 POST 到 REST api,而不写入磁盘

wordpress - Wp_Query 中的最大数组长度 post__not_in 参数

C# HASP登录代码

.net - VB6 如何阻止 COM 事件的传递(.net -> VB6 via COM)?

.net - 在 C++ .net4 中使用和不使用调试器的不同代码行为

.net - 从 ColdFusion 运行 .NET

rest - 使用 REST 发布项目列表