我有一个Contacts.cs类,其中包含类ContactsDTO,如下面的代码所示
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; }
}
}
现在我想通过REST API将对象List<ContactsDTO>
发送到另一个项目。
我为此目的实施的方法是: -
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;
}
但是我的 objectDeserializedobject 显示错误: - 无法从'System.Collection.Generic.List'转换为'System.Net.Http.HttpCompletionOption'
答案 0 :(得分:1)
您无法通过GET请求发送正文。对于您正在使用的课程,请务必read the documentation。错误消息告诉您GetAsync的任何重载都不会使用表示正文数据的参数。选择适当的http动词来发送内容;可能是POST。
答案 1 :(得分:0)
你可能会尝试这样的事情......
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);
请注意:您可能不需要使用objDeserializedMessage
,而只能使用objMessage
。而且,我已经PostAsync
反对GetAsync
。
另外,您想要 GET 请求还是 POST ?
更新1:同时检查响应的状态代码,如下所示
if(response.StatusCode == HttpStatusCode.OK){
// handle the response
ExpectedResponseModel responseModel = await response.Content.ReadAsAsync<ExpectedResponseModel >();
}
else {
// request failed, handle error
}
此处,ExpectedResponseModel
可以由您期望的响应组成。