【发布时间】:2017-04-19 09:03:50
【问题描述】:
不知道我在这里做错了什么。
尝试发布 Base64 编码的字节数组,并获得 404。
问题是,当我尝试使用正常值(“测试”)时,它可以工作。
API:
[HttpPost]
public IHttpActionResult Post(dynamic data)
{
// ...
return Ok();
}
客户:
public static bool UploadDocument(string base64Image)
{
// ...
using (var handler = new HttpClientHandler() { UseDefaultCredentials = true})
using (var client = new HttpClient(handler))
{
var data = new { Image = base64Image }; // Image = 123 (or any random value) Works.
var res = client.PostAsJsonAsync(@"(url)", data).Result;
if(res.IsSuccessStatusCode)
// ...
}
}
尝试了其他几个变体,也尝试使用 WebRequest 代替。 问题依然存在。
【问题讨论】:
-
大概您期望
PostAsJsonAsnc将图像序列化为base 64。这肯定会发生吗?如果您手动将图像对象编码为 base 64,然后尝试发布它会发生什么? -
@richzilla 我已经自己编码了。
-
仔细观察,是的,你是……
-
您是否尝试过添加 Content-Transfer-Encoding 标头。例如 httpclient.DefaultRequestHeaders.TransferEncoding.Add(new TransferCodingHeaderValue("BASE64")); w3.org/Protocols/rfc1341/5_Content-Transfer-Encoding.html
-
只是那个特定的 base 64 字符串会导致问题吗?你能用 base 64 对“test”这个词进行编码,看看是否能通过吗?
标签: c# asp.net rest asp.net-web-api web