일반적으로 stackoverflow 및 google 검색을 읽고 다시 읽었으므로 문제가 해결되지 않은 것 같습니다. 나는 그것이 나의 무지라는 것이 긍정적이다.cURL 및 .Net (C#) API 토큰
.Net (C# 구체적으로)에서 cUrl 호출을 재현하려고하는데 시간이 지나가고 왜 작동하지 않는지 알아내는 악마가 있습니다. 이 cUrl 호출은 토큰을 사용하며이를 수행 할 때 사용자 이름은 필요하지 않습니다.
다음 cUrl 호출은 명령 줄에서 호출 할 때 예상대로 작동합니다. 무고한 사람을 보호하기 위해 API 토큰이 변경되었습니다.
WebRequestHandler webHandler = new WebRequestHandler();
webHandler.Credentials = new System.Net.NetworkCredential("x", "8cb60a319c71be3356da2ea6d7c7650b");
HttpClient client = new HttpClient(webHandler);
client.BaseAddress = new Uri("https://deskapi.gotoassist.com/v1/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync("incidents.json");
if (response.IsSuccessStatusCode)
{
Console.Write("Success!");
}
응답은 "잘못된 요청"을 제공합니다
curl -u x:8cb60a319c71be3356da2ea6d7c7650b -H "Content-Type: application/json" https://deskapi.gotoassist.com/v1/incidents.json
나는 다음과 같은 노력했다. 실제 requestmessage은 다음과 같습니다
을
- response.RequestMessage {방법 : GET, RequestUri 'https://deskapi.gotoassist.com/v1/incidents.json', 버전 : 1.1, 내용 : 헤더 : { 수락 : 응용 프로그램/JSON }}
그 것이 도움이되는 경우.
다른 유래 사례를 바탕으로 또한 시도 : 또 다른 "잘못된 요청"으로
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://deskapi.gotoassist.com/v1/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("8cb60a319c71be3356da2ea6d7c7650b");
HttpResponseMessage response = await client.GetAsync("incidents.json");
if (response.IsSuccessStatusCode)
{
Console.Write("Success!");
}
Console.Write(response.RequestMessage.ToString());
. 이 메시지는 비슷하다
- response.RequestMessage {방법 : GET, RequestUri 'https://deskapi.gotoassist.com/v1/incidents.json', 버전 : 1.1, 내용 : 헤더 : { 수락 : 응용 프로그램/JSON을 인증을 : 8cb60a319c71be3356da2ea6d7c7650b} } System.Net.Http.HttpRequestMessage
실제 URI가 나에게 올바른 보인다. 콘텐츠 유형이 나에게 맞습니다. 내가 할 수있는 확실한 예를 찾을 수없는 유일한 방법은 "x : 8cb60a319c71be3356da2ea6d7c7650b"다른 방법으로 시도한 것입니다.
의견이 있으십니까? 이런 일을 처음 시도한 것이므로 무언가 무언가를하고 있습니다. 예를 들어 예제를 따르려고했지만 아무 것도 성공하지 못합니다. 도와 주셔서 미리 감사드립니다.
당신은 내가 "응용 프로그램/JSON"의 헤더를 전송하는 행을 제거 제안하고 있습니까 그것을 다른 것으로 대체하시오. 내가 그 행을 지우려한다고 가정하고 ... "무기명"을 인증에 추가했습니다. 내가 한 것처럼 "[E901] Unknown OAuth 서명 방법"을 받았습니다. –
@MichaelHenry Accept 헤더가 필요한지 여부는 말할 수 없습니다. 내가 아는 전부는 HTTP가가는 한 GET으로 Content-Type을 보내는 것이 정확하지 않다는 것입니다. 나는 당신이 접근하고있는 서비스가 상관하지 않는다고 생각합니다. 불행히도 서비스 제공 업체로부터 더 많은 문서를 찾아야 할 것입니다. –
@MichaelHenry 서비스에 대한 문서를 보는 것에서 그들은 당신이 그 머리글을 보내는 것을 어리 석고 주장합니다. HttpClient에서 ContentType은 컨텐트를 전송하지 않기 때문에 가지고 있지 않은 HttpContent 헤더에 설정됩니다. request.Headers.AddWithoutValidation을 사용하여 헤더를 수동으로 추가 할 수는 있지만 사용자를 멈추게 할 것입니다. HttpWebRequest를 다시 사용해야 할 수도 있습니다. –