因此,我尝试按以下方式调用Web api(.net 4.0)的post方法。
public class ApiClientController : ApiController
{
[HTTP Post]
public string RequestMethod(ParamClass MyClass)
{
Dostuff\\
}
}
如下所示从我的Windows服务(.net 3.5)调用
WebClient client = new WebClient();
string webApiUrl = "http://localhost:51482/";
ParamClass param = new ParamClass() { //set params };
//using System.Runtime.Serialization
Json.DataContractJsonSerializer serializer = new
Json.DataContractJsonSerializer(param.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, param);
string serialisedData = Encoding.Default.GetString(ms.ToArray());
var response =
client.UploadString("http://localhost:51482/api/ApiClient/RequestPapp",
serialisedData);
我的Windows服务的Param类也像这样
[DataContract]
public class ParamClass
{
[DataMember]
public string name { get; set; }
[DataMember]
public string refNo { get; set; }
[DataMember]
}
但是在我的网络api中,ParamClass MyClass在调用后为null,并且值不是comin(在调试时)。 我也尝试在webapi Paramclass中添加[DataContract]和[DataMember],但是没有运气。早些时候,我是通过Windows服务执行此任务的,
client.PostAsJsonAsync<ParamClass>("/api/ApiClient/RequestPapp", param);
它有效。但是我必须使用.net 3.5,而httpClient是4.0类。
请帮帮我。提前致谢。