我有一个Entity Framework对象(代码优先),所以它本质上是一个POCO。我想把它通过网络传递给WebAPI服务(WebAPI是MVC)。
我设法使用以下方法进行简单的GET调用:
Using client = New WebClient()
responseString = client.DownloadString(String.Format("http://localhost:1234/MyURLGet/{0}", txtValue.Text.Trim()))
myPOCO_Class = Newtonsoft.Json.JsonConvert.DeserializeObject(Of MyPOCO_EF_obj)(responseString)
End Using
这很有效。当我想插入数据库时,问题是尝试将MyPOCO_EF_Obj
附加到POST的主体。
到目前为止,我发现的是这个,但它不允许我附加POCO类,只有字符串:
Using client = New WebClient()
'assemble the data
Dim values As New NameValueCollection
values("value") = txtValue.Text.Trim()
values("description") = txtDescription.Text.Trim()
Dim response = client.UploadValues("http://localhost:1234/MyURLPOST/{0}", userName), values)
retVal = Encoding.[Default].GetString(response)
End Using
此代码的问题在于,当它到达另一侧时,values
被捕获但没有数据随之而来。
public string Post(string username, [FromBody] System.Collections.Specialized.NameValueCollection values) { //etc }
我更喜欢将POCO对象抛出并在那里处理它,但发送名称/值对也会起作用。
那说:
是否可以使用POCO [FromBody]
执行此操作?如果是这样,怎么样?
为什么我的值没有传递给POST处理程序?
编辑:作为参考,我目前正在研究这个问题和答案:
答案 0 :(得分:0)
如链接中所述,有很多方法可以做到这一点,但是添加了如何使用restSharp。使用nuget安装restsharp,创建一个简单的类,如下所示
public class SampleRestClient
{
private readonly RestClient _client;
private readonly string _url = "http://xyz/"; //URL of the API
public IRestResponse Submit(SAmpleViewModel model)
{
_client = new RestClient(_url);
var request = new RestRequest("api/Submit", Method.POST) { RequestFormat = DataFormat.Json };
request.AddBody(model);
var response = _client.Execute(request);
return response;
}
}
现在您可以在需要的地方调用Submit方法。希望这会有所帮助。