问个小问题。在我正在处理的一个项目中,我正在使用Nancy将REST调用转换为api调用。我不太能让它工作。
我已经设置好了Nancy并且正在工作,对于GET请求来说这是很好的。但是,当我使用内置的RestClient发出POST请求时,例如:
restClient.Post("/test", "Param");打完电话后,我想不出怎么把"Param“弄出来。
我的NancyModule设置如下:
public class TestNancyModule : NancyModule {
public TestNancyModule() {
Post["/test"] = p => {
for(KeyValuePair<dynamic, dynamic> kvp in (DynamicDictionary)p)
Console.WriteLine("{0}:{1}", kvp.Key, kvp.Value);
}
}
}我在NancyModule中设置了一个断点,当我向localhost/test发出post请求时,就会遇到这个断点,但是一旦我进入Nancy模块,我就再也找不到如何提取"Param“的方法了。理想情况下,我可以这样做
string POSTParameters = p["Value"]
//POSTParameters now equals "Param"有什么建议吗?
编辑:我保留了原文,但我会在这里澄清。我的意思是问如何访问传入请求的HTTP正文。对协议的不熟悉导致我使用错误的术语犯了一些错误。
发布于 2016-07-19 22:20:44
如果你拉入Nancy.Extensions,你可以在身体上使用.AsString()
var thing = Request.Body.AsString();这是南希的方式。
发布于 2017-04-27 17:49:43
在新版本的NancyFx (1.4+)中,您可以使用此解决方案:
using Nancy.IO;
...
var yourString = RequestStream.FromStream(Request.Body).AsString();而
var yourString = Request.Body.AsString(); 不再受支持。
发布于 2016-07-19 02:10:31
弄清楚了,它可以在"Request“字段下访问。
对于代码,我可以通过执行以下操作来获取主体
byte[] response = new byte[Request.Body.Length];
Request.Body.Read(response, 0, (int)Request.Body.Length);和
string POSTParameters = System.Text.Encoding.Default.GetString(response);这正是我要找的。如果正文会更复杂,我不会建议这样做,但我只会在这篇文章中传递一个单词。
https://stackoverflow.com/questions/38443123
复制相似问题