我想知道如何从 json 发布到 http 服务器。我用来做json的代码如下:
pedro product = new pedro();
product.FirtsName = "Ola";
product.ID = 1;
product.idade= 10;
string json = JsonConvert.SerializeObject(product);
这是pedro
课程:
public class pedro
{
public int ID { get; set; }
public string FirtsName { get; set; }
public int idade { get; set; }
}
使用 WebApi,您可以使用以下内容:
string url = "http://url.of.server/";
Pedro product = new Pedro();
product.FirtsName = "Ola";
product.ID = 1;
product.Idade = 10;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PostAsJsonAsync(url, product).Result;
if (response.IsSuccessStatusCode)
{
// do something
}
}
如果您不使用 WepApi,则有许多类似的方法,例如:https ://stackoverflow.com/a/39414248/7489072
不要按照评论中的建议对帖子的正文进行 Base64 编码,除非您绝对必须/想要发布二进制文件并且可以控制接收网络服务器。在 99% 的情况下,Web 服务器期望纯文本正文。如果您需要发布 ASCII 范围之外的字符,请使用正确的 HTTP 标头来指定 Unicode 正文加载。
更新 1(标头): HttpClient 类具有属性 DefaultRequestHeaders,可用于设置常见的请求标头,例如 AcceptEncoding。如果您需要对内容标头进行更细粒度的控制,请使用 .PostAsync(string uri, HttpContent content) 而不是 .PostAsJsonAsync (它只是为 Json 内容设置一些默认标头)
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string stringFromObject = JsonConvert.SerializeObject(product);
HttpContent content = new StringContent(stringFromObject, Encoding.UTF8, "application/json");
content.Headers.Add("YourCustomHeader", "YourParameter");
HttpResponseMessage response = client.PostAsync(url, content).Result;
if (response.IsSuccessStatusCode)
{
// do something
}
}
更新 2(编码):详细说明编码注释:当然你应该转义引号等。但这是 Json 标准的一部分,应该由通用编码器/解码器处理。最重要的是,您可以对序列化对象的属性使用任何进一步的编码。例如字符串上的 HTML 编码和二进制属性上的 Base64。只要您知道接收它的网络服务器将正确解码它。
{
"id": 3,
"title": "Decode this",
"description": "this is < HTML encoded >",
"profileImgBase64": "Nzg5MzQ4IHdleWhmQVMmKihFJiphc3R5WUdkdCphc14qVHlpZg0K"
}
所以编码单个属性,但不要编码整个 Json 有效负载,因为您必须在接收管道的开头对其进行解码,而这不是网络服务器能够理解的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句