我正在使用 Rest 服务来获取一些 json 数据。作为测试工具,他们给了我一个 url,如果我在浏览器中转到该 url,我有一个表单,我可以在文本区域中放入一些 json,然后提交表单,然后我会在页面重新加载时得到 json 结果。
我现在尝试通过在 C# 中使用 RestSharp 以编程方式复制此内容,但遇到一个问题,调用的结果是我要访问的页面的 html(而不是 json 结果)
这是我的代码:
var client = new RestClient {BaseUrl = new Uri("http://myhost.com:22333") };
var request = new RestRequest { Method = Method.POST, Resource = "/site/api", RequestFormat = DataFormat.Json };
request.AddBody(new
{
fieldtype = "name", value = "joe"
});
request.AddHeader("accept", "application/json");
client.Authenticator = new NtlmAuthenticator();
var response = client.Execute(request);
var jsonDto = new JsonDeserializer().Deserialize<ResultObj>(response);
如果我查看调试器中的response.Content(在任何反序列化之前),我会看到我使用要发布的表单访问的网页的html字符串(类似这样)
<html>
<body>
<form method='POST'>
<table>
<tr>
<td>Enter the JSON:</td>
<td>
<textarea name="json_input" cols="80" rows="30">
</textarea>
</td>
</tr>
<tr><td colspan='2'><input type='Submit' value='submit'></td></tr>
</table>
</form>
</body>
</html>
有人可以告诉我这里缺少什么,因为我希望在响应中得到相同的 json 结果。在浏览器中提交表单后我看到的内容
最佳答案
form
有一个名为 json_input
的文本字段,它将用作请求参数。
<textarea name="json_input" cols="80" rows="30">
您的 AddBody
方法表明您正在发送带有 fieldtype
和 value
参数的请求。
尝试用以下内容替换 AddBody
方法:
request.AddBody(new { json_input = "{ fieldtype : \"name\", value : \"joe\"}" });
//OR
request.AddParameter("json_input",
"{ fieldtype : \"name\", value : \"joe\"}");
关于javascript - 使用 C# Restsharp,如何复制表单帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35283191/