从C#call得到404但从邮递员那里得到200
我正在尝试从C代码调用API,但我一直得到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)。 出于好奇,
我应该/可以用相同的头模拟请求吗?我不知道为什么添加的标题会丢失 它不起作用的原因可能是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);