C# 使用json参数从API获取结果

C# 使用json参数从API获取结果,c#,httpwebrequest,httpwebresponse,webapi,C#,Httpwebrequest,Httpwebresponse,Webapi,现在,我能够使用普通web链接从api中提取返回值,而不需要传递任何参数 以下是我的示例工作脚本: var req = (HttpWebRequest)WebRequest.Create("http://myServer:1111/Test/MESService.svc/web"); req.Method = "GET"; req.Credentials = new NetworkCredential("appUser", "

现在,我能够使用普通web链接从api中提取返回值,而不需要传递任何参数

以下是我的示例工作脚本:

var req = (HttpWebRequest)WebRequest.Create("http://myServer:1111/Test/MESService.svc/web");
req.Method = "GET";
req.Credentials = new NetworkCredential("appUser", "appPass");

var waferRes = (HttpWebResponse)req.GetResponse();
var waferStream = waferRes.GetResponseStream();
string result = "";
List<JObject> data = new List<JObject>();
JsonResponse res = new JsonResponse();

using (StreamReader reader = new StreamReader(waferStream, Encoding.UTF8))
{
    result = reader.ReadToEnd();
}

Console.WriteLine(Json(result));

如果有办法处理这种情况,任何建议/评论通常都会在请求正文中传递json。但是,主体对于GET请求没有语义意义。但您可以使用查询参数json来实现这一点,例如:

http://myServer:1111/Test/MESService.svc/web/?json={%22request%22:{%22paramA%22:%22DummyA%22,%22paramB%22:%22DummyB%22}}

如果您使用GET方法传递JSON参数,那么已经有其他答案了:“?JSON=”末尾的扩展总是必需的?我可以使用不同的命名约定吗?@Rockn'Roll您可以对参数使用任何名称:“?param1=”,“?body=”,等等。有关查询字符串的更多信息:我不明白,您是如何将我当前的json格式:{“request”:{“paramA”:“DummyA”,“paramB”:“DummyB”,}转换为:{%22request%22:{%22paramA%22:%22DummyA%22,%22paramB%22:%22DummyB%22}}您有我可以引用的生成器吗?当我需要通过url请求传递它时是否需要它?我只是将json字符串转换为url编码的字符串。主要原因是转义字符。要在代码中执行此操作,可以使用
WebUtility.UrlEncode
http://myServer:1111/Test/MESService.svc/web/?json={%22request%22:{%22paramA%22:%22DummyA%22,%22paramB%22:%22DummyB%22}}