gpt4 book ai didi

c# - 使用 WebClient 调用具有复杂对象参数的 WebApi

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:44 25 4
gpt4 key购买 nike

我需要使用 WebClient 调用 WebApi,其中必须传递一个对象作为参数。我的 WebApi 方法类似于以下代码:

示例 URI:localhost:8080/Api/DocRepoApi/PostDoc

[HttpPost]
public string PostDoc (DocRepoViewModel docRepo)
{
return string.enpty;
}

然后 DocRepoViewModel 是:

public class DocRepoViewModel
{
public string Roles { get; set; }
public string CategoryName { get; set; }
public List<AttachmentViewModel> AttachmentInfo { get; set; }
}

AttachmentViewModel 是:

public class AttachmentViewModel
{
public string AttachmentName { get; set; }

public byte[] AttachmentBytes { get; set; }

public string AttachmentType { get; set; }
}

新 我需要从我的 MVC Controller (不是 javascript ajax)调用 PostDoc 方法。我如何传递这个特定的参数,我可以进行调用并在我的 WebApi 方法中获取所有数据。我们可以通过 WebClient 来实现吗?或者有更好的方法。请帮忙。

最佳答案

您可以使用 PostAsJsonAsync 方法,如下所示:

static async Task RunAsync()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("localhost:8080/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

// HTTP POST
var docViewModel = new DocRepoViewModel() { CategoryName = "Foo", Roles= "role1,role2" };
var attachmentInfo = new List<AttachmentViewModel>() { AttachmentName = "Bar", AttachmentType = "Baz", AttachmentBytes = File.ReadAllBytes("c:\test.txt" };
docViewModel.AttachmentInfo = attachmentInfo;
response = await client.PostAsJsonAsync("DocRepoApi/PostDoc", docViewModel);
if (response.IsSuccessStatusCode)
{
// do stuff
}
}
}

Asp .net reference

关于c# - 使用 WebClient 调用具有复杂对象参数的 WebApi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28302410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com