从C#call得到404但从邮递员那里得到200

从C#call得到404但从邮递员那里得到200,c#,webclient,restsharp,C#,Webclient,Restsharp,我正在尝试从C代码调用API,但我一直得到404。我从邮递员那里发出同样的请求,结果总是200 我的要求: 我应该/可以用相同的头模拟请求吗?我不知道为什么添加的标题会丢失 它不起作用的原因可能是Wizzair拒绝来自未知/黑名单用户代理的请求,以防止“未经授权”使用其API。尝试邮递员或浏览器中的userAgent-将其设置为 client.UserAgent=@“PostmanRuntime/7.6.0” 因为常规的用户代理头将被过度使用(我假设您使用的是RestSharp)。 出于好奇,

我正在尝试从C代码调用API,但我一直得到404。我从邮递员那里发出同样的请求,结果总是200

我的要求:


我应该/可以用相同的头模拟请求吗?我不知道为什么添加的标题会丢失

它不起作用的原因可能是Wizzair拒绝来自未知/黑名单用户代理的请求,以防止“未经授权”使用其API。尝试邮递员或浏览器中的userAgent-将其设置为

client.UserAgent=@“PostmanRuntime/7.6.0”

因为常规的用户代理头将被过度使用(我假设您使用的是RestSharp)。
出于好奇,我已经亲自检查过了,因为您的示例应该可以运行,而且它似乎与已更改的用户代理一起运行。它不起作用的原因可能是Wizzair拒绝未知/黑名单用户代理的请求,以防止“未经授权”使用其API。尝试邮递员或浏览器中的userAgent-将其设置为

client.UserAgent=@“PostmanRuntime/7.6.0”

因为常规的用户代理头将被过度使用(我假设您使用的是RestSharp)。
我自己检查过了-出于好奇,因为您的示例应该可以运行-它似乎与更改的用户代理一起工作

404意味着:未找到,api/search/Timeline是正确的路径,还是c代码中缺少大写或正斜杠(/api/search/Timeline或api/search/Timeline)?(注意,PostMan提供了一个代码按钮(在send按钮下,可以生成c#code)。我在PostMan中看到标题(1),这是什么?可能还有Api!=Api,具体取决于服务。几点建议:1)将“9.4.3”移动到
资源
分配。2) 对
资源
执行与邮递员相同的操作,例如“Api”。3) 确保序列化字段名称大小写相同(是否使用
JsonProperty
属性设置小写JSON名称?即ArrivalStation应序列化为ArrivalStation)。你能提供
RequestFlightBody
class的定义吗?@Max-body中的大小写问题应该返回400个错误的请求,但是,实现可能会出错。404的意思是:找不到,api/search/Timeline是正确的路径,还是c代码中缺少大写或正斜杠(/api/search/Timeline或api/search/Timeline)?(注意,邮递员提供了一个代码按钮(在发送按钮下,可以生成c#code)。我在邮递员中看到标题(1),这是什么?可能还有api!=api,具体取决于服务。几点建议:1)将“9.4.3”移动到
Resource
assignment.2)对
资源
执行与邮递员相同的操作,例如“Api”。3) 确保序列化字段名称大小写相同(是否使用
JsonProperty
属性设置小写JSON名称?即ArrivalStation应序列化为ArrivalStation)。你能提供
RequestFlightBody
class的定义吗?@Max-body中的大小写问题应该返回400个错误的请求,但是,实现可能会出错。你是对的!但问题在于.net内核。我用相同的代码创建了两个控制台应用程序:在.NET4.6.1和NETCore2.1中。From 4.6.1用户代理正确,但From net core未设置(Fiddler嗅探)。知道如何在.NETCore上设置用户代理吗?你说得对!但问题在于.net内核。我用相同的代码创建了两个控制台应用程序:在.NET4.6.1和NETCore2.1中。From 4.6.1用户代理正确,但From net core未设置(Fiddler嗅探)。知道如何在.NETCore上设置用户代理吗?
        var body = new RequestBody
        {
            AdultCount = 1,
            ChildCount = 0,
            FlightList = new List<RequestFlightBody>
            {
                new RequestFlightBody
                {
                    ArrivalStation = fromCode,
                    DepartureStation = toCode,
                    FromDateTime = tomorrow,
                    ToDateTime = lastDate
                },
                new RequestFlightBody
                {
                    ArrivalStation = toCode,
                    DepartureStation = fromCode,
                    FromDateTime = tomorrow,
                    ToDateTime = lastDate
                }
            },
            InfantCount = 0,
            PriceType = "regular"
        };

        var client = new RestClient("https://be.wizzair.com/9.4.3");
        var request = new RestRequest(Method.POST);
        request.Resource = "api/search/timetable";
        request.AddJsonBody(body);
        var result = await client.ExecuteTaskAsync(request);

        if (result.IsSuccessful)
        {
            var model = JsonConvert.DeserializeObject<FlightBody>(result.Content);
            await SaveResults(model);
        }
var client = new RestClient(@"https://be.wizzair.com");
        var request = new RestRequest(Method.POST);
        request.Resource = @"9.4.3/api/search/timetable";
        request.AddHeader("host", "be.wizzair.com:443");
        request.AddHeader("Content-Type", "application/json");
        request.AddHeader("cache-control", "no-cache");
        request.AddHeader("Accept", @"*/*");
        request.AddHeader("User-Agent", @"PostmanRuntime/7.6.0");
        request.AddHeader("Connection", @"close");
        request.AddJsonBody(body);