Restful API работает в почтальоне, C# не работает [интеграция Magento]C#

Место общения программистов C#
Anonymous
Restful API работает в почтальоне, C# не работает [интеграция Magento]

Сообщение Anonymous »

Я интегрируюсь с Magento 2, используя API RESTful. Когда я использую почтальон, он работает как шарм, а в коде C# он возвращает исключение «Несанкционированное 401».

Однако раньше он работал в коде C#, но внезапно он перестал работать.

Я пробовал все способы, пробовал (WebRequest, HTTPClient и RESTsharp), возвращалось одно и то же исключение.

Кроме того, я использую Fiddler 4 для перехвата и сопоставления запросов, я использовал плагины Fiddler to C# для извлечения кода C#, а также использовал RESTsharp Code of Postman, возвращающее то же исключение.
Удаленный сервер возвратил ошибку: (401) Несанкционировано.

//Calls request functions sequentially.
private string MakeRequests()
{
HttpWebResponse response;

if (Request_hatolna_co(out response))
{
//Success, possibly uses response.

string responseText = ReadResponse(response);
response.Close();
return responseText;
}
else
{
//Failure, cannot use response.
return "";
}
}

private static string ReadResponse(HttpWebResponse response)
{
using (Stream responseStream = response.GetResponseStream())
{
Stream streamToRead = responseStream;
if (response.ContentEncoding.ToLower().Contains("gzip"))
{
streamToRead = new GZipStream(streamToRead, CompressionMode.Decompress);
}
else if (response.ContentEncoding.ToLower().Contains("deflate"))
{
streamToRead = new DeflateStream(streamToRead, CompressionMode.Decompress);
}

using (StreamReader streamReader = new StreamReader(streamToRead, Encoding.UTF8))
{
return streamReader.ReadToEnd();
}
}
}

private bool Request_hatolna_co(out HttpWebResponse response)
{
response = null;

try
{
//Create a request to URL.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://MAGENTO.co/index.php/rest//V1/or ... ][value]=1");

//Set request headers.
request.KeepAlive = true;
request.Headers.Set(HttpRequestHeader.Authorization, "Bearer xxxxxxxxxxxxxxxxxxxxxx");
request.Headers.Add("Postman-Token", @"1181fa03-4dda-ae84-fd31-9d6fbd035614");
request.Headers.Set(HttpRequestHeader.CacheControl, "no-cache");
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36";
request.ContentType = "application/json";
request.Accept = "*/*";
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.9,ar;q=0.8,la;q=0.7");
request.Headers.Set(HttpRequestHeader.Cookie, @"store=default; private_content_version=f16533d4f181d42a1b3f386fa6d2cdf1");

//Get response to request.
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException e)
{
//ProtocolError indicates a valid HTTP response, but with a non-200 status code (e.g. 304 Not Modified, 404 Not Found)
if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response;
else return false;
}
catch (Exception)
{
if (response != null) response.Close();
return false;
}

return true;
}


Подробнее здесь: https://stackoverflow.com/questions/569 ... ntegration

Вернуться в «C#»