C# Fiddler测试通过[Frombody]类的API Post
我有一个非常简单的C#APIController,名为“TestController”,其API方法如下:C# Fiddler测试通过[Frombody]类的API Post,c#,asp.net-web-api,fiddler,C#,Asp.net Web Api,Fiddler,我有一个非常简单的C#APIController,名为“TestController”,其API方法如下: [HttpPost] public string HelloWorld([FromBody] Testing t) { return t.Name + " " + t.LastName; } Contact只是一个如下所示的类: public class Testing { [Required] public string Name; [Required]
[HttpPost]
public string HelloWorld([FromBody] Testing t)
{
return t.Name + " " + t.LastName;
}
Contact只是一个如下所示的类:
public class Testing
{
[Required]
public string Name;
[Required]
public string LastName;
}
config.Routes.MapHttpRoute(
name: "TestApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我的路由器如下所示:
public class Testing
{
[Required]
public string Name;
[Required]
public string LastName;
}
config.Routes.MapHttpRoute(
name: "TestApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
问题1:如何从C#Client测试这一点 对于#2,我尝试了以下代码:
private async Task TestAPI()
{
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("Name", "Happy"),
new KeyValuePair<string, string>("LastName", "Developer")
};
var content = new FormUrlEncodedContent(pairs);
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var result = await client.PostAsync(
new Uri("http://localhost:3471/api/test/helloworld",
UriKind.Absolute), content);
lblTestAPI.Text = result.ToString();
}
专用异步任务TestAPI()
{
var pairs=新列表
{
新的KeyValuePair(“名称”、“快乐”),
新的KeyValuePair(“姓氏”、“开发者”)
};
var内容=新FormUrlEncodedContent(成对);
var client=新的HttpClient();
client.DefaultRequestHeaders.Accept.Add(
新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
var result=wait client.PostAsync(
新Uri(“http://localhost:3471/api/test/helloworld",
乌里金(绝对),内容);
lblTestAPI.Text=result.ToString();
}
问题2:如何从Fiddler处测试此功能?
似乎找不到如何通过UI传递类。对于问题1: 我将从.NET客户端实现POST,如下所示。 注意:您需要添加对以下程序集的引用: a) System.Net.Http b)System.Net.Http.Formatting
public static void Post(Testing testing)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:3471/");
// Add an Accept header for JSON format.
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
// Create the JSON formatter.
MediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter();
// Use the JSON formatter to create the content of the request body.
HttpContent content = new ObjectContent<Testing>(testing, jsonFormatter);
// Send the request.
var resp = client.PostAsync("api/test/helloworld", content).Result;
}
关于问题2:
在Fiddler中,更改GET to POST下拉列表中的动词,并将其放入JSON
请求正文中对象的表示形式
不幸的是,如果我将[FromBody]移除,小提琴手将找不到它,并得到404。C#客户机代码无论以哪种方式都不会得到响应。传递内容类型时需要[FromBody]:application/json。如果删除该选项,则需要传递一个内容类型:application/x-www-form-urlencodedIs您为什么使用URL编码的内容而不是使用“Content-Type:application.json”来指定正文中的有效负载?对于复杂类型,您希望使用正文而不是查询字符串。您的控制器中是否定义了多个POST操作?你能发布完整的控制器代码吗?没有真正的原因。我主要学习API和测试各种东西。毫无疑问,Json是大型机构的发展方向。我只是想让它在Fiddler上工作(它现在就是这样)。谢谢你的意见!!我刚刚完成了一个入站Twilio的工作。在Fiddler中,我添加了内容类型:application/x-www-form-urlencoded到标题中,然后在正文中添加以下内容:Sid=replace+替换为+original+Sid+for+status+callback&AccountSid=assigned+by+twilio&From=%2B122334444&to=%2B15556667777&body=something+really+witty&status=sent参数的名称与班级。