有没有办法发送List<>通过POST方法将REST API从一个项目通过其他项目?

时间:2018-06-12 05:42:16

标签: 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 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'

2 个答案:

答案 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可以由您期望的响应组成。