C# 是否有方法发送列表<&燃气轮机;对象通过RESTAPI的POST方法从一个项目到另一个项目?
我有一个Contacts.cs类,它包含ContactsDTO类,如下代码所示C# 是否有方法发送列表<&燃气轮机;对象通过RESTAPI的POST方法从一个项目到另一个项目?,c#,.net,rest,api,web,C#,.net,Rest,Api,Web,我有一个Contacts.cs类,它包含ContactsDTO类,如下代码所示 namespace WindowsScheduling { public class ContactsDTO { public string ContactFirstName { get; set; } public string ContactLastName { get; set; } public string ContactAddres
namespace WindowsScheduling
{
public class ContactsDTO
{
public string ContactFirstName { get; set; }
public string ContactLastName { get; set; }
public string ContactAddress1 { get; set; }
public string Class { get; set; }
}
}
现在我想通过RESTAPI向另一个项目发送一个对象List
为此,我实施的方法是:-
public string SendContactToKentico( List<ContactsDTO> objDeserializedMessage)
{
var RemoteURL = ConfigurationManager.AppSettings["RemoteURL"].ToString();
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(RemoteURL);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage responseMessage = client.GetAsync(RemoteURL + "/Schedule/GetContactsByScheduler",objDeserializedMessage).Result;
return msg;
}
公共字符串SendContactToKentico(列出objDeserializedMessage)
{
var RemoteURL=ConfigurationManager.AppSettings[“RemoteURL”].ToString();
HttpClient=新的HttpClient();
client.BaseAddress=新Uri(RemoteURL);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
HttpResponseMessageResponseMessage=client.GetAsync(RemoteURL+“/Schedule/GetContactsByScheduler”,objDeserializedMessage)。结果;
返回味精;
}
但是这里我的objectDeserializedobject显示了一个错误:-
无法从“System.Collection.Generic.List”转换为“System.Net.Http.HttpCompletionOption”您可能可以尝试以下操作
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(RemoteURL);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string url = $"endPoint";
ObjectContent content = new ObjectContent<List<ContactsDTO>>(objMessage, new JsonMediaTypeFormatter());
HttpResponseMessage response = await client.PostAsync(url, content);
这里,
ExpectedResponseModel
可以是您期望的响应。您不能发送带有GET请求的正文。请确保为您正在使用的类指定。错误消息告诉您,GetAsync的重载没有一个采用表示主体数据的参数。选择适当的http动词来发送内容;可能是POST。@mjwills我不得不使用POST,我为这个错误道歉,我已经用PostAsync替换了GetAsync,但是我仍然收到了相同的错误。请更新你的帖子以包含你的实际代码。谢谢你的回复,我已经用PostAsync替换了GetAtsync,但是我仍然收到了相同的错误。正如Tom所说,您需要阅读文档以确定哪个参数进入哪个参数,以及参数将接受什么类型。它不接受列表
。您需要将列表转换为方法可以接受的内容,即派生自的类。有关如何将JSON作为StringContent发送的示例,请参见。
if(response.StatusCode == HttpStatusCode.OK){
// handle the response
ExpectedResponseModel responseModel = await response.Content.ReadAsAsync<ExpectedResponseModel >();
}
else {
// request failed, handle error
}