当前位置: 首页 > 知识库问答 >
问题:

POST请求返回404在C#中但不在Postman中

司马飞
2023-03-14

我有一个简单的helper来发送post请求并返回结果,它应该与自定义构建的API进行通信,所有的工作都离不开一个特定的URL。

我的helper方法如下所示(使用RestSharp)

    public static IRestResponse POSTResponse( string URL, List<Parameter> Parameters )
    {
        var restClient = new RestClient( URL );

        var restRequest = new RestRequest( Method.POST )
        {
            RequestFormat = DataFormat.Json
        };

        Parameters.ForEach( p =>
        {
            restRequest.AddParameter( p );
        } );

        var result = restClient.Post(restRequest);
        return result;
    }

我要求如下:

    var Values = new List<Parameter>();
    Values.AddRange( ApiCredentialsParams );
    Values.Add( new Parameter("Key", form.Key, ParameterType.RequestBody) );
    Values.Add( new Parameter("Value", form.Value, ParameterType.RequestBody) );

    var response = Network.POSTResponse( Url, Values );

非常感谢任何帮助。

共有1个答案

澹台啸
2023-03-14

我已经找到了解决此问题的方法,

Postman将数据发送为get请求,错误出现在两个地方,

API方面,我已经更新了方法,以包含参数的[FromBody]标记

public HttpResponseMessage Update( [FromBody] MyModel model )
public static IRestResponse POSTResponse( string URL, List<Parameter> Parameters )
    {
        var client = new RestClient( URL );
        var request = new RestRequest( Method.POST )
        {
            RequestFormat = DataFormat.Json,
            Method = Method.POST
        };

        foreach (var parameter in parameters)
        {
            switch( parameter.Type)
            {
                case ParameterType.HttpHeader:
                    request.AddHeader( parameter.Name, (string)parameter.Value );
                    break;
                case ParameterType.QueryString:
                    request.AddQueryParameter( parameter.Name, (string)parameter.Value );
                    break;
                case ParameterType.GetOrPost:
                    request.AddParameter( parameter.Name, (string)parameter.Value );
                    break;
            }
        }

        var result = client.Post( request );
        return result;
    }
 类似资料:
  • 我正在尝试对远程服务器进行api调用,最初,我遇到以下错误:

  • 我有一个python代码,用来创建一个json文件,作为post请求中的数据。 变量如下所示: 当我打印上述变量时,我得到以下输出: 当我在我的邮递员请求上使用以下输出时,它会像我期望的那样工作。但是当我使用相同的变量发送带有以下函数的超文本传输协议请求时,我得到了一个错误。 为什么我的输出在postman上工作,而不是在python本身?

  • 问题内容: 我刚刚更新了Angular + Ionic的新版本,并且处理远程请求的方法停止工作并始终返回404响应。 请求如下: 处理远程请求的方法的代码如下: 但是没有运气。 服务器端通过这种方式处理请求: 如果我试图使用邮递员或卷曲发送请求,一切似乎都在工作。 离子信息: AngularJS版本: 我该如何解决? 非常感谢您的任何建议 问题答案: 哼,我只是遇到了同样的问题:标头表明它已经被拿

  • 我试图使超文本传输协议后请求获得api令牌。如果成功,它应该返回访问令牌、令牌类型(承载)和expires_in的字符串值。 我的代码是一个通用的,我希望看到它能工作。但是由于某些原因,它抛出了一个例外400“远程服务器返回了一个错误。错误请求”。我一直在尽一切努力修复这个问题,但结果没有改变。 当我调试代码并在输出窗口中看到结果时,数据流有一个异常,说“这个流不支持查找操作” 我怀疑这是由于po

  • 我想使用带有mysql的npm包knex将myback-end文件夹与localhost上的mysql数据库连接起来。 步骤: 在后端项目文件夹(包含knex和mysql)中运行nodemon server.js文件 在《邮差》中,我喜欢: 打开“邮递员”,选择“Post Requst”,复制URL:localhost:3000/myPath“,复制到正文: {“电子邮件”:“me@gmail.c

  • 这是我得到的错误: 通用域名格式。谷歌。格森。JsonSyntaxException:java。lang.IllegalStateException:应为BEGIN_对象,但在第1行第1列路径处为字符串$ 我从邮递员那里得到的JSON回复: 这就是我如何响应rest API(使用slim2框架)的响应: 回声响应方法: 调用API的方法: APIServie界面: 我如何获得实例: 我发布所有这些