он работает в почтальоне и не работает в коде - PullRequest
0 голосов
/ 22 апреля 2019

Я пытался подключить REST API с помощью почтальона, и это всегда хороший запрос. Нет проблем.

Но в остальном коде реализации я всегда получаю сообщение об ошибке «StatusCode: Unauthorized, Content-Type: text / plain; charset = utf-8, Content-Length: 0)».

Я пробовал много способов сделать это, но это никогда не делалось.

//url = url server
//authorization = Bearer .....
//body = text json 

var client = new RestClient(url);
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", authorization);
request.AddParameter("application/json", body, ParameterType.RequestBody);

IRestResponse response = client.Execute(request);

var result = response.Content;

В почтальоне

enter image description here

enter image description here

Сервер не получает токен авторизации, когда я пытаюсь сделать это в коде.

1 Ответ

0 голосов
/ 23 апреля 2019

Я использую HttpWebRequest, но я думаю, что это также возможно, используя RestClient.

Я использовал Fiddler для идентификации заголовков в запросе почтальона, а затем отвечаю на эти заголовки в коде.

Код ниже работает для меня.

Я внесу некоторые изменения, но это все.


//url = url server
//authorization = Bearer .....
//body = text json 
//bytesBody = body in byte[]

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.PreAuthenticate = true;
webRequest.Method = "POST";

webRequest.Headers["Cache-Control"] = "no-cache";
webRequest.Accept = "*/*";
webRequest.Headers["Accept-Encoding"] = "gzip, deflate, br";

webRequest.Headers["Accept-Language"] = "en-US,en;q=0.9,pt-BR;q=0.8,pt;q=0.7";
webRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36";
webRequest.ContentType = "application/json";

webRequest.ContentLength = bytesBody.Length;
webRequest.Headers["authorization"] = authorization;
//webRequest.Headers["Origin"] = "chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop";

webRequest.KeepAlive = true;
webRequest.ServicePoint.Expect100Continue = false;
webRequest.Host = host;


using (Stream dataStream = webRequest.GetRequestStream())
{
    dataStream.Write(bytesBody, 0, bytesBody.Length);
    dataStream.Flush();
    dataStream.Close();
}

WebResponse response = webRequest.GetResponse();

using (var streamReader = new StreamReader(response.GetResponseStream()))
{
    string result = streamReader.ReadToEnd();
}
response.Close();


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...