c# - Face API Base64 图片发布返回 badrequest

标签 c# rest azure-cognitive-services

Face API 与图像的 URL 一起工作,但是当我尝试将图像发送为 Base64 编码它返回一个错误。 在此示例代码中,我使用 Restsharp 发送数据

我的代码如下。

 public string GenerateRest(String Base64Image)
    {
        var serviceURL = Constants.BaseServiceURI;
        var client = new RestClient(serviceURL);

        var request = new RestRequest(Constants.BaseResoruce, Method.POST);
        request.AddHeader("Ocp-Apim-Subscription-Key", Constants.MS_API_KEY);
        request.AddHeader("Content-Type", "application/octet-stream");

        request.RequestFormat = DataFormat.Json;

        var baseString = Base64Image.Replace("data:image/jpeg;base64,", String.Empty);

        byte[] newBytes = Convert.FromBase64String(baseString);

        request.AddBody(newBytes);
        // execute the request
        IRestResponse response = client.Execute(request);
        var content = response.Content; // raw content as string

        return content;
    }

根据答案代码修复 Restsharp 请求后

 public FaceAPIOutput GenerateRest(String Base64Image)
    {
        var serviceURL = Constants.BaseServiceURI;
        var client = new RestClient(serviceURL);
        var baseString = Base64Image.Replace("data:image/jpeg;base64,", String.Empty);
        byte[] newBytes = Convert.FromBase64String(baseString);

        var request = new RestRequest(Constants.BaseResoruce, Method.POST);
        request.AddHeader("Ocp-Apim-Subscription-Key", Constants.MS_API_KEY);
        request.AddParameter("application/octet-stream", newBytes, ParameterType.RequestBody);
        request.RequestFormat = DataFormat.Json;

        IRestResponse response = client.Execute(request);
        var content = response.Content; // raw content as string

        return ConvertToFaceAPIOutObject(content);
    }

最佳答案

Restsharp 在获取二进制有效负载时看起来有点特殊。您需要执行以下操作,而不是添加多部分表单部分的 request.AddBody:

request.AddParameter("application/octet-stream", newBytes, ParameterType.RequestBody);

比较Can RestSharp send binary data without using a multipart content type?

关于c# - Face API Base64 图片发布返回 badrequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40325359/

相关文章:

c# - 如何使用 Lucene.net 实现自定义过滤器?

c# - 将 float[] 作为 ref float 传递给非托管代码是个好主意吗?

php - 如何在 php-Codeigniter 中向 RESTserver api 发送发布请求?

c# - c# 中接受下划线和空格的字母数字字符串的正则表达式

spring - 如何在代理后面配置 Spring HATEOAS?

java - 编辑 JIRA 问题 Java Rest

c# - 使用 Microsoft Cognitive Speech + Websocket 的连续语音识别 - Xamarin

c# - 认知服务。 Azure 端点不工作

找不到 Azure 文本主持人

c# - 异步使用 AppDomain.DoCallBack()