首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OWIN TestServer上调用HTTP

在OWIN TestServer上调用HTTP
EN

Stack Overflow用户
提问于 2015-12-17 19:01:38
回答 1查看 3K关注 0票数 2

我一直在尝试用OWIN TestServer类实现集成测试,除了PUT或DELETE方法的实现之外,一切都可以工作。POST方法代码(它可以工作)如下所示:

代码语言:javascript
复制
using (var server = TestServer.Create<Startup>())
{
    var response = await server.CreateRequest(uri)
        .AddHeader("Authorization", "Bearer " + _token)
        .And(
            request =>
                request.Content =
                new ObjectContent(typeof (T), command, new JsonMediaTypeFormatter()))
        .PostAsync();

    Assert.AreEqual(response.StatusCode, expectedStatusCode);

    return await response.Content.ReadAsStringAsync();
}

为了执行PUT请求,我尝试了以下两种方法:

代码语言:javascript
复制
using (var server = TestServer.Create<Startup>())
{
    var response = await server.CreateRequest(uri)
        .AddHeader("Authorization", "Bearer " + _token)
        .And(
            request =>
                request.Content =
                new ObjectContent(typeof (T), command, new JsonMediaTypeFormatter()))
        .And(request => request.Method =  = HttpMethod.Put)
        .PostAsync();

    Assert.AreEqual(response.StatusCode, expectedStatusCode);

    return await response.Content.ReadAsStringAsync();
}

代码语言:javascript
复制
using (var server = TestServer.Create<Startup>())
{
    var response = await server.CreateRequest(uri)
        .AddHeader("Authorization", "Bearer " + _token)
        .And(
            request =>
                request.Content =
                new ObjectContent(typeof (T), command, new JsonMediaTypeFormatter()))
        .And(request => request.Method =  = HttpMethod.Put)
        .SendAsync("PUT");

    Assert.AreEqual(response.StatusCode, expectedStatusCode);

    return await response.Content.ReadAsStringAsync();
}

SendAsync("PUT")作为一个不受支持的方法返回。该参数不是可选的。PostAsync方法忽略POST并仍然尝试POST谓词。

除了POST和GET之外,我如何使用这些动词和其他动词?

EN

回答 1

Stack Overflow用户

发布于 2015-12-17 19:14:26

事实上,我在提出这个问题几分钟后就发现了这个问题。这个问题最终成了一个路线问题。通过仔细观察响应,我能够确定"405 -方法不允许“与调用的格式无关,而是我的路径不正确。

对于任何浏览的人来说,正确的语法应该是SendAsync("PUT").。.And(request => request.Method == HttpMethod.Put)甚至没有必要.

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

https://stackoverflow.com/questions/34342283

复制
相关文章

相似问题

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