Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有方法发送列表<&燃气轮机;对象通过RESTAPI的POST方法从一个项目到另一个项目?_C#_.net_Rest_Api_Web - Fatal编程技术网

C# 是否有方法发送列表<&燃气轮机;对象通过RESTAPI的POST方法从一个项目到另一个项目?

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

我有一个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; }
     }
}
现在我想通过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
}