【发布时间】:2020-11-26 12:29:28
【问题描述】:
// 需要使用这个人在byte[]中转换成Json来完成api,我尝试了一些我在这里找到的不同方法,但我无法让它工作heelp
static async void MakeRequest()
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
var person = new Person();
person.id = "1234";
person.Name = "John Doe";
person.Email = " ";
person.individualIdentificationCode = "0000";
person.order = "1";
person.action = "DIGITAL-SIGNATURE";
person.signurl = "https://sandbox.portaldeassinaturas.com.br/Assinatura/AssinarEletronicoFrame/152124?chave=";
var json = JsonConvert.SerializeObject(person);
var data = new StringContent(json, Encoding.UTF8, "application/json");
// Request headers
client.DefaultRequestHeaders.Add("Token", "{}");
var uri = "https://api-sbx.portaldeassinaturas.com.br/api/v2/document/create?" + queryString;
HttpResponseMessage response;
// Request body
byte[] byteData = Encoding.UTF8.GetBytes(data);
using (var content = new ByteArrayContent(byteData))
{
content.Headers.ContentType = new
MediaTypeHeaderValue("application/Json");
response = await client.PostAsync(uri, content);
}
}
}
}
【问题讨论】:
-
请始终将代码和错误消息添加为文本,而不是图像。
-
只发布StringContent而不是ByteArrayContent,客户端会做相应的转换。
-
StringContent"is-a"ByteArrayContent( .. "is-a"HttpContent)。所以只需将其传递给PostAsync。应该工作。 -
顺便说一句,您看到的错误是因为
GetBytes需要char[]或string。但是您正在尝试传递StringContent类型的对象,并且编译器没有可用的转换。但如上所述:你甚至不需要那个。 -
只是将“数据”放在最后的响应中?删除 byte[] 部分?
标签: c# api rest httpclient