【发布时间】:2021-02-10 03:14:14
【问题描述】:
我正在尝试执行 GET 命令,以便可以从服务器获取数据。下面的 Curl 在 Postman 中工作。
$ curl -X GET -H "Authorization: {SESSION_ID}" \
https://{server}/api/{version}/metadata/vobjects
在运行我的代码时,我能够获取会话 ID。下一步是获取数据。但是当我执行 GET 时,我没有得到任何响应。相反,我收到如下错误:“指定的值具有无效的 HTTP 标头字符。(参数'名称')”
下面是我尝试执行的 C# 代码
public static void getObjects(string sessionID)
{
var client = new RestClient("https://generic-server.com/api/v20.3/metadata/vobjects/");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization:", sessionID);
IRestResponse response = client.Execute(request);
Console.WriteLine("Here's the response: " + response.Content + " " + response.Content.Length);
Console.WriteLine("Here's the error message: " + response.ErrorMessage);
}
问题:我没有收到服务器的响应,响应长度为零。
这是响应:0
response.ErrorMessage 给出以下信息:
以下是错误消息:指定的值包含无效的 HTTP 标头字符。 (参数“名称”)
注意:当我将冒号留在标头之外时,我会从服务器收到以下响应:
{"responseStatus":"FAILURE","errors":[{"type":"INVALID_DATA","message":"无效的http头[接受:application/json, text/json, text/x-json , 文本/javascript, 应用程序/xml, 文本/xml]"}]} 190
【问题讨论】:
-
那么你用fiddler比较请求了吗?
-
我认为您应该将冒号从标头中删除,作为建议,您可以测试将“Accept:application/json”标头添加到请求中。
-
@NavidRsh 你将如何构建 curl 命令?
-
@00110001 我比较了提琴手的输出。它说我在邮递员中有一个会话 ID,而不是在 C# 中。我不知道为什么它会这么说,因为我有一个会话 ID
-
@vincetaylor70 我知道 curl 命令没有那个标头,但是错误消息说明了这个标头,我认为至少值得一试。