首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Nancy获取C#正文

使用Nancy获取C#正文
EN

Stack Overflow用户
提问于 2016-07-19 01:56:49
回答 4查看 3.6K关注 0票数 2

问个小问题。在我正在处理的一个项目中,我正在使用Nancy将REST调用转换为api调用。我不太能让它工作。

我已经设置好了Nancy并且正在工作,对于GET请求来说这是很好的。但是,当我使用内置的RestClient发出POST请求时,例如:

代码语言:javascript
运行
复制
            restClient.Post("/test", "Param");

打完电话后,我想不出怎么把"Param“弄出来。

我的NancyModule设置如下:

代码语言:javascript
运行
复制
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“的方法了。理想情况下,我可以这样做

代码语言:javascript
运行
复制
    string POSTParameters = p["Value"]
    //POSTParameters now equals "Param"

有什么建议吗?

代码语言:javascript
运行
复制

编辑:我保留了原文,但我会在这里澄清。我的意思是问如何访问传入请求的HTTP正文。对协议的不熟悉导致我使用错误的术语犯了一些错误。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-07-19 22:20:44

如果你拉入Nancy.Extensions,你可以在身体上使用.AsString()

代码语言:javascript
运行
复制
var thing = Request.Body.AsString();

这是南希的方式。

票数 3
EN

Stack Overflow用户

发布于 2017-04-27 17:49:43

在新版本的NancyFx (1.4+)中,您可以使用此解决方案:

代码语言:javascript
运行
复制
using Nancy.IO;
...
var yourString = RequestStream.FromStream(Request.Body).AsString();

代码语言:javascript
运行
复制
var yourString = Request.Body.AsString(); 

不再受支持。

票数 3
EN

Stack Overflow用户

发布于 2016-07-19 02:10:31

弄清楚了,它可以在"Request“字段下访问。

对于代码,我可以通过执行以下操作来获取主体

代码语言:javascript
运行
复制
            byte[] response = new byte[Request.Body.Length];
            Request.Body.Read(response, 0, (int)Request.Body.Length);

代码语言:javascript
运行
复制
            string POSTParameters = System.Text.Encoding.Default.GetString(response);

这正是我要找的。如果正文会更复杂,我不会建议这样做,但我只会在这篇文章中传递一个单词。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38443123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档