C# 如何使用MultipartFormDataContentnt调用API并在C中获得响应#

C# 如何使用MultipartFormDataContentnt调用API并在C中获得响应#,c#,asp.net,http,C#,Asp.net,Http,我有一个API,它接受一个ifformfile并返回一个带有一些值的IActionsresult。当我用postman调用API时,它工作得很好,我得到了一个很好的200ok响应,其中包含了我正在寻找的数据。但是当我试图从另一个程序中调用API时,我没有得到任何响应。我没有收到任何错误,只是程序似乎在等待一个从未显示的响应。我只是想知道,如果有人能看到这段代码的问题,任何帮助都会非常重要 我的API和程序都在同一台计算机上,下面是我用来调用API的代码 public static async T

我有一个API,它接受一个ifformfile并返回一个带有一些值的IActionsresult。当我用postman调用API时,它工作得很好,我得到了一个很好的200ok响应,其中包含了我正在寻找的数据。但是当我试图从另一个程序中调用API时,我没有得到任何响应。我没有收到任何错误,只是程序似乎在等待一个从未显示的响应。我只是想知道,如果有人能看到这段代码的问题,任何帮助都会非常重要

我的API和程序都在同一台计算机上,下面是我用来调用API的代码

public static async Task<string> Calculate()
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            using (var content = new MultipartFormDataContent())
            {
                var img = Image.FromFile("path");
                MemoryStream ms = new MemoryStream();
                img.Save(ms, System.Drawing.Imaging.ImageFormat.jpeg);
                content.Add(new StreamContent(new MemoryStream(ms.ToArray())), "image", "myImage.jpg");
                using (var response = await client.PostAsync($"http://localhost:####/api/1.0/###", content))
                {
                    var responseAsString = await response.Content.ReadAsStringAsync();

                    return responseAsString;
                }
            }
        }
    }
公共静态异步任务计算()
{
使用(var client=new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
使用(var content=new MultipartFormDataContent())
{
var img=Image.FromFile(“路径”);
MemoryStream ms=新的MemoryStream();
保存(ms,System.Drawing.Imaging.ImageFormat.jpeg);
Add(新的StreamContent(新的MemoryStream(ms.ToArray()),“image”,“myImage.jpg”);
使用(var response=wait client.PostAsync($)http://localhost:####/api/1.0/###“,内容))
{
var responseAsString=await response.Content.ReadAsStringAsync();
返回响应字符串;
}
}
}
}
使用邮递员成功请求: 试试这个-

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri($"http://localhost/###");
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    using (var content = new MultipartFormDataContent())
    {
        content.Add(new StreamContent(new MemoryStream(image)), "image", "myImage.jpg");
        using (var response = await client.PostAsync($"http://localhost:#####/###/###/###", content).ConfigureAwait(false))
        {
            if (response.StatusCode == HttpStatusCode.OK)
            {
                var responseAsString =  response.Content.ReadAsStringAsync().Result;
                var receiptFromApi = JsonConvert.DeserializeObject<Receipt>(responseAsString);
                var metadata = new metadata(bilaga)
                {
                    Value1 = fromApi.Value1.Value,
                    Value2 = fromApi.Value2.Value,
                    Value3 = fromApi.Value3.Value,
                    Value4 = fromApi.Value4.Value
                };
                return metadata;
            }
            else
            {
                throw new InvalidProgramException();
            }
        }
    }
}
使用(var-client=new-HttpClient())
{
client.BaseAddress=新Uri($”http://localhost/###");
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
使用(var content=new MultipartFormDataContent())
{
添加(新的StreamContent(新的MemoryStream(image)),“image”,“myImage.jpg”);
使用(var response=wait client.PostAsync($)http://localhost:#####/###/###/###,内容)。配置等待(false))
{
if(response.StatusCode==HttpStatusCode.OK)
{
var responseAsString=response.Content.ReadAsStringAsync().Result;
var receiptFromApi=JsonConvert.DeserializeObject(responseAsString);
变量元数据=新元数据(bilaga)
{
Value1=来自API.Value1.Value,
Value2=来自api.Value2.Value,
Value3=来自API.Value3.Value,
Value4=来自API.Value4.Value
};
返回元数据;
}
其他的
{
抛出新的InvalidProgrameException();
}
}
}
}

参考-

请向我们展示成功的邮递员请求,以便我们可以比较两者。我现在添加了一个链接,指向posman请求的图片。我在标题中有Contentnt类型的应用程序/json,在BodyHey@Debalata Hazra中有表单数据!不要处理HttpClient。它意味着在你的应用程序的生命周期中重复使用:感谢你的回答我现在从我的API得到了响应:)