我看到这些帖子,但他们没有成功:
您可以在此处找到完整的代码:https://github.com/te2020/GoEuroAPiClassLibrary/blob/master/GOEuroApi_Requests.cs
只有相关部分(我认为):
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Encoding", "gzip, deflate");
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0");
httpClient.BaseAddress = new Uri("https://www.goeuro.com/");
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "/GoEuroAPI/rest/api/v5/searches");
request.Content = new StringContent(jsonString,
Encoding.UTF8,
"application/json");//CONTENT-TYPE header
我的小提琴手看起来像this而且有效。
发送该请求后我收到了错误消息:
var response = await httpClient.SendAsync(request);
我错过了什么?
答案 0 :(得分:1)
如果您使用HTTP作为请求(而不是HTTPS),您可以从服务器看到更有用的响应:
{"message":"Search options are not correct!","statusCode":400}
这似乎表明您发送的searchOptions JSON由于某种原因无效。在不知道goeuro API的情况下,我无法说出确切的问题是什么。不幸的是,我没有时间去探索它。
我会做的是使用小提琴手比较'用于将您的工作请求与来自您的程序的请求进行比较的工具。只需在Fiddler中选择两个请求并右键单击 - >相比。然后尝试使您的请求与工作请求完全相同。我注意到工作请求中有cookie,你可能没有发送,你应该添加。