我在web api中有一个新方法
[HttpPost]
public ApiResponse PushMessage( [FromUri] string x, [FromUri] string y, [FromBody] Request Request)
Run Code Online (Sandbox Code Playgroud)
请求类就像
public class Request
{
public string Message { get; set; }
public bool TestingMode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在使用PostBody对localhost/Pusher/PushMessage进行查询?x = foo&y = bar:
{ Message: "foobar" , TestingMode:true }
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我想实现一个REST API,并且在我的GET请求上需要一个正文.(如下所述:带请求主体的HTTP GET)
是否有http客户端无法发送带有GET请求的正文?Fiddler能够做到这一点,虽然消息框是红色的.
这是这个问题的一个分支为什么在"穿越Rubicon"之后HttpWebRequest主体为val?这回答了(一个障碍是跳过),但是下一个障碍让我兴奋起来.
使用此代码:
public async void PostArgsAndXMLFileAsStr([FromBody] string stringifiedXML, string serialNum, string siteNum)
{
XDocument doc = XDocument.Parse(await Request.Content.ReadAsStringAsync());
Run Code Online (Sandbox Code Playgroud)
...或这个:
XDocument doc = XDocument.Load(await Request.Content.ReadAsStreamAsync());
Run Code Online (Sandbox Code Playgroud)
...这是作为传入的stringifiedXML:
<?xml version=1.0?>
<LocateAndLaunch>
<Tasks>Some Task</Tasks>
<Locations>Some Location</Locations>
</LocateAndLaunch>
Run Code Online (Sandbox Code Playgroud)
...我得到异常:" System.Xml.XmlException未被用户代码处理HResult = -2146232000 Message = Root元素丢失. "
使用此代码(相同的stringifiedXML):
XDocument doc = XDocument.Parse(stringifiedXML);
Run Code Online (Sandbox Code Playgroud)
我明白了
System.InvalidOperationException未被用户代码处理HResult = -2146233079 Message = Sequence不包含任何元素Source = System.Core StackTrace:在System.Linq.Enumerable.First [TSource](IEnumerable`1 source)at HandheldServer.Controllers.DeliveryItemsController.d__2 .MoveNext()在c:\ HandheldServer\HandheldServer\Controllers\DeliveryItemsController.cs:第109行InnerException:
IOW,取决于我如何解析传入的字符串,我得到" 根元素丢失 "或" 序列不包含元素 "
Deuce McAlistair MacLean Virginia Weeper是什么?!?不是<LocateAndLaunch>根元素?不是Some Task和Some Location …
这是Asp.Net Webform应用程序
这是我的Apicontroller中的POST方法
public void Post([FromBody]string value)
{
}
Run Code Online (Sandbox Code Playgroud)
我正在使用提琴手后期处理.
我做了这样的实验.
但事实并非如此.
问题是什么.
你能帮我吗?
我试过了,我失败了.
public void Post(MyViewModel model)
{
string aa = model.Value;
}
public class MyViewModel
{
public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在提琴手:
Request Body:
Value=hakan
Run Code Online (Sandbox Code Playgroud) 我正在将PUT请求中的json有效负载发送到Web API控制器操作.有问题的行为有一个如下所示的签名:
public IHttpActionResult Post([FromBody]SaveThingRequest request)
Run Code Online (Sandbox Code Playgroud)
SaveThingRequest看起来像这样:
public class SaveThingRequest
{
public List<ElementInfo> Elements { get; set; }
public class ElementInfo
{
public List<ElementSettingInfo> Settings { get; set; }
public class ElementSettingInfo
{
public string Name { get; set; }
public string Value { get; set; }
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在包含具有设置的元素的请求正文中发布了json.我通过在控制器操作中手动反序列化并确认JSON具有类似于以下内容的结构来证实这一点:
{
Elements: [
{
Settings: [
{
Name: 'Name 1',
Value: 'Value 1'
},
{
Name: 'Name 2',
Value: 'Value 2'
}
]
},
{
Settings: [
{
Name: …Run Code Online (Sandbox Code Playgroud) 这是基本设置,我有一个asp.net核心webapi控制器(在c#中),具有以下发布功能:
[HttpPost]
public ActionResult<string> Post([FromBody] string Name)
{
//Do some processing with the "Name" argument...
return Ok( "Success!" );
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试将以下原始JSON请求正文发送到此函数:
{
"Name": "Foo"
}
Run Code Online (Sandbox Code Playgroud)
但是,当使用上面的正文向该函数发送发布请求时,我在服务器控制台中收到以下错误:
“执行ObjectResult,写入类型为'Microsoft.AspNetCore.Mvc.SerializableError'的值”
而这个错误在客户端
{“”:[“解析值时遇到意外字符:{。Path,第1行,位置1。” ]}
我尝试在函数的开头设置断点,但它甚至不会触发!为什么会出现可序列化的错误?
我正在尝试将数据发布到应该接受的API List<UpdatePointHistory>.列表的大小是正确的,但对象的属性是空白的.
public class UpdatePointHistory
{
string Tree { get; set; }
string FruitCount { get; set; }
string Observations { get; set; }
int PrivateId { get; set; }
}
public void Post([FromBody]List<UpdatePointHistory> updates)
{
//Do some sort of auth for god sake
Console.WriteLine("test");
}
Run Code Online (Sandbox Code Playgroud)
我发布的数据:
从API返回的对象:
c# ×5
http-post ×2
.net ×1
asp.net ×1
asp.net-core ×1
http-get ×1
json ×1
linq-to-xml ×1
rest ×1