Visual C# 发出类似 python 的 Web 请求

Visual C# make web request like python's

我有一小段 python 代码,它使用 urllib2 发出网络请求,如下所示

import json
import urllib2

urlRequest = urllib2.Request('<link>')
urlRequest.add_header('Content-Type', 'application/json')
urlRequest.add_header('RegistrationToken', '<token>')

data = {
    'content': '<c>',
    'messagetype': 'RichText',
    'contenttype': 'text',
    'id': '<id>'
}

urllib2.urlopen(urlRequest, json.dumps(data))

当我尝试在 C# 中执行此操作时,我遇到了以下问题

谷歌搜索了一段时间后,我设法编写了这段代码:

var request = (HttpWebRequest)WebRequest.Create(url_input.Text);
request.ContentType = "application/json";
request.Headers["RegistrationToken"] = rtoken_input.Text;
request.GetResponse();

我设法处理了 headers 部分,但关于 data 的问题仍然存在。 json 编码的最佳方式是什么?

有人知道该怎么做吗?

如果您在将 POST 数据序列化为 JSON 有效载荷之后,则几乎没有选择。

1) System.Web.Helpers.Json.Encode MSDN Link

2) 使用 JSON.NET 库 Link

至于您尝试将 python 转换为 C#,您的方向是正确的。 参考this link

或者您可以使用 WebClient class MSDN Link 参考this link以及

伪代码

var client = new WebClient();
client.Headers.Add("Content-Type", "application/json");
client.Headers.Add("RegistrationToken", "<token>");
string response = client.UploadString("<link>", "<json string>");