Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#使用Nancy获取HTTP主体_C#_Nancy - Fatal编程技术网

C#使用Nancy获取HTTP主体

C#使用Nancy获取HTTP主体,c#,nancy,C#,Nancy,快速提问。我正在使用Nancy将REST调用转换为我正在处理的项目中的api调用。我不能完全让它工作 我已经让Nancy准备好并开始工作了,对于GET请求,一切都很好。但是,当我使用内置RestClient发出POST请求时,例如: restClient.Post("/test", "Param"); 一旦打了电话,我想不出如何把“Param”弄出来 我的NancyModule设置如下: public class TestNancyModule : NancyModul

快速提问。我正在使用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);
        }
    }
}
有什么建议吗

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


编辑:我保留原来的帖子,但我会在这里澄清。我想问一下如何访问传入请求的HTTP主体。对协议的不熟悉导致我使用了一些错误的术语。

解决了这个问题,可以在“请求”字段下访问它

对于代码,我可以通过如下操作获得身体

            byte[] response = new byte[Request.Body.Length];
            Request.Body.Read(response, 0, (int)Request.Body.Length);


这正是我想要的。如果正文变得更复杂,我不建议这样做,但我只想为这篇文章传递一个单词。

如果你把Nancy.Extensions拉进来,你可以在正文上使用
.AsString()

var thing = Request.Body.AsString();

这是Nancy的方法。

对于查询参数,您可以在模块上使用Nancy的请求对象

var queryParam =  this.Request.Query.ParamName;
对于实际的帖子主体,您可以使用

this.Bind(); 

这将使用正文中指定的属性创建动态。

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

using Nancy.IO;
...
var yourString = RequestStream.FromStream(Request.Body).AsString();

var yourString = Request.Body.AsString(); 

不再支持。

谢谢!这是一种更好的方法,因为方法astring()不存在。南希1。4@ArtemG-注意“拉入Nancy.Extensions”部分,即使用using Nancy.Extensions;在using子句中插入一行。
using Nancy.IO;
...
var yourString = RequestStream.FromStream(Request.Body).AsString();
var yourString = Request.Body.AsString();